Skip to content

misosoup160/discord-bot-f

Repository files navigation

DiscordBotF

フィヨルドブートキャンプサーバー専用のDiscord連携サービスです。

サービス内でメンバーが質問に答えると、それをBotがDiscordのチャンネルに自動投稿します。 Discordコミュニティ内のメンバーがお互いのことをもっと知り合うきっかけをつくります!

※ RubyでDiscordBotを作るチャレンジをしてる方が見てくださっているみたいですが、 Botのコードについてより詳しくブログの方に書きましたのでそちらも参考ください。 https://mssp160.netlify.app/2021-07/d1/

開発環境

  • Ruby 3.0.2
  • Rails 6.1.3

機能概要

  • 指定したサーバーのメンバーのみがログインできます。
  • サーバーのメンバーは答えたい質問を選んで、それに対する回答を入力します。
  • 回答はDiscordの指定したチャンネルに毎日ランダムに投稿されます。
  • 自分の回答と過去に投稿されたメンバーの回答をサービス上で見ることができます。
  • サーバーの管理人は、サービスの管理者として登録されます。
  • 管理者は、任意のユーザーを管理者にすることができます。
  • 管理者は、質問の登録、編集、削除ができます。
  • サーバーから去ったメンバーは自動的にサービスから削除されます。

利用方法

DiscordのApplicationの作成

https://discordapp.com/developers/applications/

Botの設定

  • Developer PortalからBotを作成してTokenを環境変数に設定
  • SERVER MEMBERS INTENTをONにする
  • OAuth2のScopeからBotをチェック、PermissionsのSendMessagesをチェックする
  • 発行されたURLからBotをサーバーに招待する

OAuth2の設定

  • Developer PortalのOAuth2のRedirectsにリダイレクトURLを設定する
  • OAuth2のClient IDとClient Secretを環境変数に設定
  • 利用Scopeはidentifyのみです

環境変数の設定

環境変数名 説明
DISCORD_BOT_TOKEN BotのToken
DISCORD_CLIENT_ID OAuth2のClient ID
DISCORD_CLIENT_SECRET OAuth2のClient Secret
DISCORD_SERVER_ID Botを招待するDiscordサーバーのID
DISCORD_CHANNEL_ID Botのメッセージを送信したいチャンネルのID
SEND_MESSAGE_COUNT 一度に送信する回答数
URL_HOST ローカルの場合は127.0.0.1:3000

Discordの個人設定の詳細設定から開発者モードをONにすると、サーバーやチャンネルのIDを取得できるようになります。

インストール

$ bin/setup
$ rails server

Rake Task

ローカルの場合はrails discord_bot:startでBotをオンライン状態にたちあげることができます。 Herokuで動かす際はDynosに表示されるこのコマンドをONにしてください。 ユーザーの自動削除機能はBotをオンライン状態にしていないと機能しません。 ※Heroku無料枠で利用している場合はスリープ状態になってしまうようなので、Heroku Schedulerで10分おきにアクセスさせるなどして対応してください。

メッセージの送信はrails discord_bot:send_messagesを定期実行することで動作しています。 Herokuで動かす際はHeroku Schedulerにこのコマンドを登録してください。

テスト

$ rails test:all

ScreenShots

discord-bot-f-1 discord-bot-f-2

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published