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