Discord.jsを使用してグローバルチャットっぽいものを作ってみた。

みんなが「グローバルチャット」と呼ぶものを、Discord.jsを使用して書いてみました。

# 注意

  • data.jsonというファイルを作成し、共有化されたチャンネルのIDとWebhookのIDを保存します
  • Node.js v12以上のバージョンで動作します
    • 古いバージョンを使用している場合はアップデートしてください
  • ボットのトークンはDISCORD_TOKENという名前の環境変数に設定してください
    • DISCORD_TOKENにボットのトークンを設定することでclient.login()にトークンを渡す必要がないため
  • ボットにメッセージの管理ウェブフックの管理を与えてください
    • ウェブフックの管理を与える理由は、共有化されたチャンネル全てに対して、送信者のユーザーネーム、アバター、メッセージを送信するため
    • メッセージの管理を与える理由は、共有化されたチャンネルに対してユーザーが全体にメッセージを送信したあとに、送信者のメッセージを消すためです
      • 同じ内容のメッセージが重複してチャンネルに表示されるのを防ぐためにこの権限が必要になります
    • 一つでも権限が足りないと、コマンドを使用できません
  • ボットのメッセージは無視されます
  • 有効ではないサーバーでは使用できません

# どこまで送信できるのか

メッセージの送信はもちろん、アバター、ユーザーネームも設定され、まるで本人が送信しているかのように見えます(実際はWebhook)

添付ファイルにも対応しており、ファイルのやり取りも可能です(ただし、マルウェアのチェックなどはサポートしていないので注意が必要)

# 使用方法

コマンドの使用方法です。2つのコマンドを使用して、共有チャンネルの追加、削除をします。

  • !addShareChannel <チャンネルのメンション(複数可能)>
  • !removeShareChannel <チャンネルのメンション(複数可能)>

なお、これらのコマンドを使用できるのは。サーバー管理ウェブフックの管理権限を持っているユーザーのみです。

一般のユーザーが使用できるということはないので、安心してください。

# メッセージを共有するチャンネルを追加する

共有化するチャンネルを設定するコマンドです。

!addShareChannel <チャンネルのメンション(複数可能)>

# メッセージを共有するチャンネルを削除する

共有化しているチャンネルを削除するコマンドです。

!removeShareChannel <チャンネルのメンション(複数可能)>

# Docker を使用する

Docker HubにDockerイメージを公開してあるので、そこから落として利用することができます。オススメ

# コンテナの作成

************.*****.*************** の部分をボットのトークンに置き換えて下記のコマンドを実行するだけです。

docker run -d -e DISCORD_TOKEN="************.*****.***************" --name share-chat-discordbot inkohx/share-chat-discordbot:latest

# コンテナの起動

docker start share-chat-discordbot

# コンテナの停止

docker stop share-chat-discordbot

# Docker Compose を使用する

データ(共有化されているチャンネルのIDとWebhookのIDが入ったJSONデータ)をホストとコンテナで共有したいときに便利です。

# docker-compose.yml を作成する

docker-compose.yml を作成し、YAMLファイルに下記の内容を書き込んでください。

version: '3'

services:
  bot:
    image: inkohx/share-chat-discordbot:latest
    environment:
      - "DISCORD_TOKEN=ボットのトークン"
    volumes:
      - ./app:/inkohx/app/discordjs-share-chat/data

# コンテナの起動

docker-compose.yml があるフォルダで下記のコマンドを実行

docker-compose up -d

# コンテナの停止

docker-compose.yml があるフォルダで下記のコマンドを実行

docker-compose down

# 機能追加やバグ報告

リポジトリにプルリクエスト、バグ報告をお願いします。