Advertisement
Guest User

Untitled

a guest
Jan 23rd, 2019
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 2.07 KB | None | 0 0
  1. require 'yaml'
  2. require 'discordrb'
  3. require 'pry'
  4.  
  5. @bot = Discordrb::Commands::CommandBot.new token: 'token', prefix: '!'
  6.  
  7. @bot.message(with_text: 'test') do |event|
  8.   event.respond 'test received, but from ruby'
  9. end
  10.  
  11. @bot.ready do |event|
  12.   @bot.update_status 'online', 'with fire(ruby fire)', nil
  13.   puts 'boot is ready'
  14. end
  15.  
  16. # challenged.on(server) => Member#display_name
  17.  
  18. @challenges = {}
  19.  
  20. def challenge_lifetime
  21.   @challenge_lifetime ||= "2 hours"
  22. end
  23.  
  24. def set_challenge_lifetime lifetime
  25.   @challenge_lifetime = lifetime
  26. end
  27.  
  28. def challenge(challenger, champ)
  29.   # Reject if champ is already challenged
  30.   # time series data store
  31.   @challenges[champ] = [challenger, challenge_lifetime]
  32.   "#{challenger.display_name} is challenging #{champ.username}"
  33. end
  34.  
  35. @bot.command :challenge do |event, user|
  36.   challenger = event.author
  37.   challenged = @bot.parse_mention(user)
  38.   event.respond challenge(challenger, challenged)
  39.  
  40.   cb = ->(result) {
  41.     puts result.content
  42.     if result.content.split(' ')[1] == 'loss'
  43.       dethrone(challenged)
  44.       event.respond "#{challenger.display_name} won"
  45.     else
  46.       event.respond "#{challenged.username} won"
  47.     end
  48.   }
  49.  
  50.   challenged.await(:result, &cb)
  51.   event.user.await(:result, &cb)
  52. end
  53.  
  54. @bot.command :challenges do |event, _user|
  55.   challenges = @challenges.map do |challenged, challenger|
  56.     "- #{challenger.display_name} vs #{challenged.username}"
  57.   end
  58.   event.respond ["Current challenges are:", challenges].join("\n")
  59. end
  60.  
  61. def dethrone(user)
  62.   remove = @bot.servers.first.last.roles.find { |role| role.name == 'CHAMPION' }
  63.   # user needs to be a Member
  64.   user.remove_role(remove)
  65. end
  66.  
  67. @bot.command :lifetime do |event, _user|
  68.   if lifetime = event.message.content.split(' ')[1]
  69.     set_challenge_lifetime lifetime.to_i
  70.   end
  71.   event.respond challenge_lifetime
  72. end
  73.  
  74. @bot.command :dethrone do |event, user|
  75.   dethrone(event.author)
  76. end
  77.  
  78. @bot.command :crown do |event, user|
  79.   remove = event.server.roles.find { |role| role.name == 'CHAMPION' }
  80.   event.author.add_role(remove)
  81. end
  82.  
  83. @bot.run
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement