discorb is a Discord API wrapper for Ruby.
Installation
Add this line to your application's Gemfile:
gem 'discorb'
And then execute:
$ bundle install
Or install it yourself as:
$ gem install discorb
Usage
Ping & Pong
require "discorb"
client = Discorb::Client.new
client.once :standby do
  puts "Logged in as #{client.user}"
end
client.on :message do ||
  next if ..bot?
  next unless .content == "ping"
  .channel.post("Pong!")
end
client.run(ENV["DISCORD_BOT_TOKEN"])
Quiz Game
require "discorb"
client = Discorb::Client.new
client.once :standby do
  puts "Logged in as #{client.user}"
end
client.on :message do ||
  next if ..bot?
  next unless .content == "!quiz"
  operator = [:+, :-, :*].sample
  num1 = rand(1..10)
  num2 = rand(1..10)
  val = num1.send(operator, num2)
  .channel.post("Quiz: `#{num1} #{operator} #{num2}`")
  begin
    msg = client.event_lock(:message, 30) { |m|
      m.content == val.to_s && m.channel == .channel
    }.wait
  rescue Discorb::TimeoutError
    .channel.post("No one answered...")
  else
    msg.reply("Correct!")
  end
end
client.run(ENV["DISCORD_BOT_TOKEN"])
Slash Commands
require "discorb"
client = Discorb::Client.new
client.slash("hello", "Greet for you") do |interaction|
  interaction.post("Hello!", ephemeral: true)
end
client.run(ENV["DISCORD_BOT_TOKEN"])
Note: You must run discorb setup before using slash commands.
Contributing
Bug reports and pull requests are welcome on GitHub at github.com/discorb-lib/discorb.
License
The gem is available as open source under the terms of the MIT License.