vrobot4/source/modules/dtl.rb

82 lines
2.2 KiB
Ruby

class Mod_DTL < Vrobot4::Module::Module
def self.type() "DTL" end
Vrobot4::Module.add_module_type self, server: "Discord"
def initialize info
super
register :c_setnotify, "setnotify", "Adds you to a notification group."
register :c_unsetnotify, "unsetnotify", "Removes you from a notification group."
register :c_listnotify, "listnotify", "Lists available notification groups."
register :c_notify, "notify", "Notifies a notification group."
@info.map! do |id| id.resolve_id end
@notify_id = 462143279618850826.resolve_id
@member_id = 388350737308188684.resolve_id
@server_id = 273581213510402058.resolve_id
end
def ensure_role m
if m.chan.real.server && m.chan.real.server.id == @server_id
m.user.real.add_role @member_id unless m.user.real.role? @member_id
end
end
def get_role m, argv
roles = m.chan.real.server.roles
role = roles.find do |r| r.name.casecmp(argv) == 0 end
unless role and @info.any? do |id| role.id == id end
raise ArgumentError, "Invalid notification group, use `.listnotify` for a list of available groups."
end
role
end
def on_message m
ensure_role m
super m
end
def on_command m, cnam, argv
ensure_role m
super m, cnam, argv
end
def c_setnotify m, argv
ensure_role m
m.user.real.add_role get_role(m, argv)
m.reply "Successfully added you to the notification group."
end
def c_unsetnotify m, argv
m.user.real.remove_role get_role(m, argv)
m.reply "Successfully removed you from the notification group."
end
def c_listnotify m, argv
text = ""
for role in @info do
text << m.chan.real.server.role(role).name + ?\n
end
m.reply text
end
def c_notify m, argv
if m.user.real.role? @notify_id
argv = argv.split ?,, 2
role = get_role m, argv[0]
role.mentionable = true
if argv[1]
m.reply "#{role.mention} - #{argv[1].strip}"
else
m.reply role.mention
end
role.mentionable = false
else
m.reply "You don't have permission for that."
end
end
end
## EOF