Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
37
Help us understand the problem. What is going on with this article?
@denebola

イチからDiscord Bot 。for Ruby

More than 1 year has passed since last update.

※基本的なCUI操作などは説明がないです。

DiscordのBotで検索しても、みんなPythonの話しかしてない。
あまりに情報が少なくて辛かったので、今から作ろうとしている人に、残していきます。

OS:windows10 (CentOS,Raspbian)
環境:Ruby2.3.3

Discordrbの紹介

discordでbotを作るためのgem ...だけだと味気ないので少々詳しく。
discordには、外部からテキストチャット、ボイスチャットなどにアクセスできるAPIがあります。
discordrbはそれらのAPIをrubyらしくいじれるようにしたラッパーです。GitHubのwikiやClassListが充実しているので、初心者でも(英語を)頑張れば使えると思います。

Discordrbのインストール

Discordrbはgemに登録されているので、かんたんに導入できます。

$ gem install discordrb

もちろん、 Bundlerでも使えます。Gemfileに
gem 'discordrb' と追記して $ bundle install

hello,worldのコードを書く

お好みのエディタで以下のコードを書いてみてください。

hello.rb
require 'discordrb'

bot = Discordrb::Commands::CommandBot.new (
token: TOKEN,
client_id: CLIENT_ID,
prefix:'/',
)

bot.command :hello do |event|
 event.send_message("hallo,world.#{event.user.name}")
end

bot.run

hello.rbと名前を付けて保存。
TOKENとCLIENT_IDについては後々説明します。
これで /hello と打つと、 hello,[UserName]. と返ってくるbotができました。
(hello,worldじゃないやん)

DiscordにBotを登録する

discordには登録しているものとして話を進めます。
登録してない方は -> https://discordapp.com/register

  1. 次ののURLでNewAppをクリック https://discordapp.com/developers/applications/me
  2. APP NAMEを決めて、「Create App」をクリック
  3. 「Create a Bot User」をクリック
  4. Client ID(18桁くらいの数字)とToken(click to revealをクリックして出てきた英数字)をメモ
  5. 以下のURLに、Client IDを置き換えてアクセス
    discordapp.com/oauth2/authorize?client_id=Client ID&scope=bot&permissions=0
  6. 接続させたいサーバーを選択

登録完了。

botを起動

まず、さっき書いたコードを開いて、メモしたClient IDとTokenを、それぞれCLIENT_IDとTOKENに書き換えます。
その後、コマンドプロンプト(ターミナル)で $ ruby hello.rb でbotが起動されます。

Discord上で/hello

ちゃんと返って来たら、正常に稼働しています。
お疲れ様でした。

どうだったでしょうか?ちゃんと動きましたか?
もしダメなときはコメント頂けたら、お手伝い出来るかもしれません。(気まぐれで)

参考サイト

37
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
denebola
rubyをやりたいのに、組込みC/C++やってる学生

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
37
Help us understand the problem. What is going on with this article?