vrobot4/source/sv_discord.rb

74 lines
1.5 KiB
Ruby

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_spaced: -> (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