Node.js를 사용하여 중재자 봇 만들기
5335 단어 discordbotjavascriptnode
그래서 문제는 우리가 어떻게 하느냐입니다. 이를 수행하는 두 가지 방법이 있습니다
1) 중재자를 고용하고 비용을 지불합니다.
2) 더 좋고 비용이 $0인 경우 동일한 작업을 모두 수행할 수 있는 봇 생성
옵션 2를 합시다. 훨씬 더 효과적이고 비용 효율적입니다.
소개
따라서 우리는 discord API와 상호 작용하기 위해 discord.js 라이브러리와 함께 node.js를 사용할 것입니다.
먼저 package.json을 초기화하겠습니다.
npm init
이 명령을 실행하면 프로젝트에 대한 많은 질문이 표시되므로 프로젝트에 대한 올바른 세부 정보를 입력하고 다음 단계로 넘어갑시다.
index.js라는 자바스크립트 파일을 만들고 package.json에서 스크립트에 다음을 추가합니다.
"scripts": {
start: 'node index.js'
},
이제 필요한 라이브러리를 설치하자
npm i discord.js --save
이것은 개발용이므로 dev 종속성으로 설치하십시오.
npm i nodemon --save-dev
이제 package.json의 스크립트에 다른 개발 스크립트를 추가해 보겠습니다.
"scripts": {
dev: 'nodemon index.js'
},
시작하자
index.js 파일에서 discord 라이브러리를 가져와 코드베이스에서 사용합니다.
const discord = require('discord.js');
그런 다음 봇을 나타내는 discord 클라이언트 개체를 포함할 client라는 상수를 만들어 봅시다.
const client = new discord.Client({
intents: [
Intents.FLAGS.GUILDS,
Intents.FLAGS.GUILD_MESSAGES
]
})
누군가 메시지를 보내거나 봇이 참여할 때마다 이벤트라고 합니다.
user1 ==> 메시지 전송 ==> 이벤트 전송
각 이벤트에는 사용자가 메시지를 보내거나 봇이 참여할 때만 실행되는 onMesssage 및 ready와 같은 기능을 나타내는 이름이 있습니다!.
이벤트가 전송될 때 실행되는 콜백 함수를 제공할 수도 있습니다.
누군가 보낸 메시지의 모든 세부 정보가 포함된 메시지를 보낼 때 실행되는 onMessage 이벤트를 사용하여 누군가 무언가를 게시했는지 확인할 수 있습니다.
//logging when ready
client.on('ready', () => {
console.log('🤖🤖 Bot is ready to login');
console.log(`Logged in as ${client.user.tag}!`);
});
메시지에서 나쁜 단어를 감지하는 나쁜 단어 패키지를 설치해야 합니다.
npm i bad-words
const Filter = require('bad-words')
client.on('messageCreate', async (message) => {
const filter = new Filter();
if (filter.isProfane(message.content)) {
message.delete();
message.channel.send(
`${message.author.username} you are not allowed to use that
word.`
);
}
})
이제 우리는 discord 토큰을 얻었고 이 코드 줄을 사용하여 봇을 초기화했습니다.
client.login(process.env.DISCORD_TOKEN);
이미지에 과도한 노출 감지를 추가하기 위해 이 API를 사용할 수 있습니다.
실시간 이미지 조정 및 비디오 조정 API
사진, 비디오 및 라이브 스트림을 조정하는 최고의 API입니다. 사람이 조정하는 비용의 일부만으로 사용하기 쉬운 API로 과도한 노출, 폭력, 공격적인 콘텐츠를 즉시 감지합니다.
sightengine.com
계정이 있으면 로그인을 클릭하고 계정이 없으면 시작을 클릭하십시오. 이메일과 비밀번호를 입력하십시오.
API 키 섹션으로 이동하여 API 사용 토큰 및 API 시크릿을 복사하십시오.
또한 Axios를 설치하여 NSFW 확인을 위해 데이터를 보내고 가져옵니다.
npm i axios
완료 후 요청을 해보자...
이제 검토를 위해 보낼 URL을 전달해야 합니다.
axios.get(
'https://api.sightengine.com/1.0/check.json',
{
params: {
url,
models: 'nudity,wad,gore',
api_user: API_USER,
api_secret: API_SECRET,
},
}
);
사용자의 첨부 파일을 가져오려면 사용자에게 첨부 파일이 있는지 확인합니다.
그런 다음 사용자가 보낸 이미지가 포함된 메시지에서 URL 매개변수를 추출합니다.
client.on('messageCreate', async (message) => {
//checking if the user has a attachmnet
if (message.attachments.size > 0) {
//send the picture url for review using the api
//message.attachments.first().url --> url of the image sent by the user
const { data } = await axios.get(
'https://api.sightengine.com/1.0/check.json',
{
params: {
message.attachments.first().url,
models: 'nudity,wad,gore',
api_user: API_USER,
api_secret: API_SECRET,
},
}
);
}
})
if 조건에 이 코드를 삽입하여 메시지를 삭제하고 경고 메시지를 보냅니다.
if (
data.weapon > 0.01 ||
data.alcohol > 0.1 ||
data.gore.prob > 0.1 ||
data.nudity.safe < 0.9
) {
message.channel.send(
`${message.author} Please do not post nudity or gore content.`
);
message.delete()
}
드디어 준비 완료! npm run dev를 실행하여 부적절한 비디오 메시지 등의 결과와 모든 메시지를 확인하십시오.
사인오프...
프로모션
이 블로그를 만드는 데 나를 지원하고 싶습니까?
내 채널 구독
GitHub에서 나를 팔로우하세요
https://github.com/sauhardo2020
Reference
이 문제에 관하여(Node.js를 사용하여 중재자 봇 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/thejavascripter/creating-a-discord-bot-moderator-using-discordjs-3dl1텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)