Node.js를 사용하여 중재자 봇 만들기

디스코드 게임 서버를 만들든 커뮤니티 서버를 만들든 혼돈을 유지하고 제어할 일종의 중재자가 필요합니다. 이는 부적절한 텍스트나 이미지를 차단하는 형태일 수 있으며 어린이용 서버인 경우 큰 문제가 될 수 있습니다.

그래서 문제는 우리가 어떻게 하느냐입니다. 이를 수행하는 두 가지 방법이 있습니다

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

좋은 웹페이지 즐겨찾기