require 'discordrb' class Sv_Discord < Vrobot4::Server::Server Vrobot4::Server.add_server_type self, "Discord" attr_reader :bot class User < Vrobot4::Server::User attr_reader :real def initialize user, admins @real = user @name = user.name @roles = "v" if user.is_a? Discordrb::Member @roles += "o" if admins.select {|role| user.role? role}.any? @roles += "O" if user.owner? end end end class Channel < Vrobot4::Server::Channel attr_reader :real def initialize chan @real = chan @name = "#" + chan.name end end def initialize info super if info.key? "admins"; @admins = info["admins"] else; @admins = []; end @bot = Discordrb::Bot.new \ token: info["apikey"], client_id: info["client"] @bot.message do |evt| m = Vrobot4::Server::Message.new \ msg: evt.message.content, user: User.new(evt.user, @admins), chan: Channel.new(evt.channel), serv: self, reply: -> (text) {evt.respond text}, reply_b: -> (text) {evt.respond "```\n" + text + "```"} if m.msg.start_with? '.' argv = m.msg.split cnam = argv.shift[1..-1] onCommand m, cnam, argv else onMessage m end end end def connect @bot.run end def type "Discord" end def flags "AD" end end ## EOF