diff --git a/plugins/administration.lua b/plugins/administration.lua index fbe829d..3c2b232 100644 --- a/plugins/administration.lua +++ b/plugins/administration.lua @@ -1002,7 +1002,7 @@ function administration.init_command(self_) photo = drua.get_photo(msg.chat.id), founded = os.time() } - administration:update_desc(self, msg.chat.id) + administration.update_desc(self, msg.chat.id) for i,_ in ipairs(administration.flags) do self.database.administration.groups[msg.chat.id_str].flags[i] = false end diff --git a/plugins/bandersnatch.lua b/plugins/bandersnatch.lua index 0411494..49a68c2 100755 --- a/plugins/bandersnatch.lua +++ b/plugins/bandersnatch.lua @@ -10,7 +10,7 @@ Alias: /bc ```]] function bandersnatch:init() - bandersnatch.triggers = utilities.triggers(self.info.username):trigger('bandersnatch'):trigger('bc').table + bandersnatch.triggers = utilities.triggers(self.info.username):t('bandersnatch'):t('bc').table end local fullnames = { "Wimbledon Tennismatch", "Rinkydink Curdlesnoot", "Butawhiteboy Cantbekhan", "Benadryl Claritin", "Bombadil Rivendell", "Wanda's Crotchfruit", "Biblical Concubine", "Syphilis Cankersore", "Buckminster Fullerene", "Bourgeoisie Capitalist" } diff --git a/plugins/greetings.lua b/plugins/greetings.lua index 5e0dcb7..48148e2 100755 --- a/plugins/greetings.lua +++ b/plugins/greetings.lua @@ -38,7 +38,7 @@ function greetings:init() end greetings.triggers = { - self.info.first_name .. '%p*$' + self.info.first_name:lower() .. '%p*$' } end @@ -48,7 +48,7 @@ function greetings:action(msg) for trigger,responses in pairs(self.config.greetings) do for _,response in pairs(responses) do - if msg.text_lower:match(response..',? '..self.info.first_name) then + if msg.text_lower:match(response..',? '..self.info.first_name:lower()) then bindings.sendMessage(self, msg.chat.id, utilities.latcyr(trigger:gsub('#NAME', nick))) return end diff --git a/plugins/moderation.lua b/plugins/moderation.lua deleted file mode 100755 index 0e3eb18..0000000 --- a/plugins/moderation.lua +++ /dev/null @@ -1,309 +0,0 @@ - -- Moderation for Liberbot groups. - -- The bot must be made an admin. - -- Put this near the top, after blacklist. - -- If you want to enable antisquig, put that at the top, before blacklist. - -local moderation = {} - -local bindings = require('bindings') -local utilities = require('utilities') - -local antisquig = {} - -local commands = { - - ['^/modhelp$'] = function(self, msg) - - if not self.database.moderation[msg.chat.id_str] then return end - - local output = [[ - *Users:* - • /modlist - List the moderators and administrators of this group. - *Moderators:* - • /modkick - Kick a user from this group. - • /modban - Ban a user from this group. - *Administrators:* - • /modadd - Add this group to the moderation system. - • /modrem - Remove this group from the moderation system. - • /modprom - Promote a user to a moderator. - • /moddem - Demote a moderator to a user. - • /modcast - Send a broadcast to every moderated group. - ]] - output = output:gsub('\t', '') - - bindings.sendMessage(self, msg.chat.id, output, true, nil, true) - - end, - - ['^/modlist$'] = function(self, msg) - - if not self.database.moderation[msg.chat.id_str] then return end - - local output = '' - - for k,v in pairs(self.database.moderation[msg.chat.id_str]) do - output = output .. '• ' .. v .. ' (' .. k .. ')\n' - end - - if output ~= '' then - output = '*Moderators for* _' .. msg.chat.title .. '_ *:*\n' .. output - end - - output = output .. '*Administrators for* _' .. self.config.moderation.realm_name .. '_ *:*\n' - for k,v in pairs(self.config.moderation.admins) do - output = output .. '• ' .. v .. ' (' .. k .. ')\n' - end - - bindings.sendMessage(self, msg.chat.id, output, true, nil, true) - - end, - - ['^/modcast'] = function(self, msg) - - local output = utilities.input(msg.text) - if not output then - return 'You must include a message.' - end - - if msg.chat.id ~= self.config.moderation.admin_group then - return 'This command must be run in the administration group.' - end - - if not self.config.moderation.admins[msg.from.id_str] then - return self.config.moderation.errors.not_admin - end - - output = '*Admin Broadcast:*\n' .. output - - for k,_ in pairs(self.database.moderation) do - bindings.sendMessage(self, k, output, true, nil, true) - end - - return 'Your broadcast has been sent.' - - end, - - ['^/modadd$'] = function(self, msg) - - if not self.config.moderation.admins[msg.from.id_str] then - return self.config.moderation.errors.not_admin - end - - if self.database.moderation[msg.chat.id_str] then - return 'I am already moderating this group.' - end - - self.database.moderation[msg.chat.id_str] = {} - return 'I am now moderating this group.' - - end, - - ['^/modrem$'] = function(self, msg) - - if not self.config.moderation.admins[msg.from.id_str] then - return self.config.moderation.errors.not_admin - end - - if not self.database.moderation[msg.chat.id_str] then - return self.config.moderation.errors.moderation - end - - self.database.moderation[msg.chat.id_str] = nil - return 'I am no longer moderating this group.' - - end, - - ['^/modprom$'] = function(self, msg) - - if not self.database.moderation[msg.chat.id_str] then return end - - if not self.config.moderation.admins[msg.from.id_str] then - return self.config.moderation.errors.not_admin - end - - if not msg.reply_to_message then - return 'Promotions must be done via reply.' - end - - local modid = tostring(msg.reply_to_message.from.id) - local modname = msg.reply_to_message.from.first_name - - if self.config.moderation.admins[modid] then - return modname .. ' is already an administrator.' - end - - if self.database.moderation[msg.chat.id_str][modid] then - return modname .. ' is already a moderator.' - end - - self.database.moderation[msg.chat.id_str][modid] = modname - - return modname .. ' is now a moderator.' - - end, - - ['^/moddem'] = function(self, msg) - - if not self.database.moderation[msg.chat.id_str] then return end - - if not self.config.moderation.admins[msg.from.id_str] then - return self.config.moderation.errors.not_admin - end - - local modid = utilities.input(msg.text) - - if not modid then - if msg.reply_to_message then - modid = tostring(msg.reply_to_message.from.id) - else - return 'Demotions must be done via reply or specification of a moderator\'s ID.' - end - end - - if self.config.moderation.admins[modid] then - return self.config.moderation.admins[modid] .. ' is an administrator.' - end - - if not self.database.moderation[msg.chat.id_str][modid] then - return 'User is not a moderator.' - end - - local modname = self.database.moderation[msg.chat.id_str][modid] - self.database.moderation[msg.chat.id_str][modid] = nil - - return modname .. ' is no longer a moderator.' - - end, - - ['/modkick'] = function(self, msg) - - if not self.database.moderation[msg.chat.id_str] then return end - - if not self.database.moderation[msg.chat.id_str][msg.from.id_str] then - if not self.config.moderation.admins[msg.from.id_str] then - return self.config.moderation.errors.not_mod - end - end - - local userid = utilities.input(msg.text) - local usernm = userid - - if msg.reply_to_message then - userid = tostring(msg.reply_to_message.from.id) - usernm = msg.reply_to_message.from.first_name - end - - if not userid then - return 'Kicks must be done via reply or specification of a user/bot\'s ID or username.' - end - - if self.database.moderation[msg.chat.id_str][userid] or self.config.moderation.admins[userid] then - return 'You cannot kick a moderator.' - end - - bindings.sendMessage(self, self.config.moderation.admin_group, '/kick ' .. userid .. ' from ' .. math.abs(msg.chat.id)) - - bindings.sendMessage(self, self.config.moderation.admin_group, usernm .. ' kicked from ' .. msg.chat.title .. ' by ' .. msg.from.first_name .. '.') - - end, - - ['^/modban'] = function(self, msg) - - if not self.database.moderation[msg.chat.id_str] then return end - - if not self.database.moderation[msg.chat.id_str][msg.from.id_str] then - if not self.config.moderation.admins[msg.from.id_str] then - return self.config.moderation.errors.not_mod - end - end - - local userid = utilities.input(msg.text) - local usernm = userid - - if msg.reply_to_message then - userid = tostring(msg.reply_to_message.from.id) - usernm = msg.reply_to_message.from.first_name - end - - if not userid then - return 'Kicks must be done via reply or specification of a user/bot\'s ID or username.' - end - - if self.database.moderation[msg.chat.id_str][userid] or self.config.moderation.admins[userid] then - return 'You cannot ban a moderator.' - end - - bindings.sendMessage(self.config.moderation.admin_group, '/ban ' .. userid .. ' from ' .. math.abs(msg.chat.id)) - - bindings.sendMessage(self.config.moderation.admin_group, usernm .. ' banned from ' .. msg.chat.title .. ' by ' .. msg.from.first_name .. '.') - - end - -} - -function moderation:init() - if not self.database.moderation then - self.database.moderation = {} - end - - if self.config.moderation.antisquig then - commands['[\216-\219][\128-\191]'] = function(msg) - - if not self.database.moderation[msg.chat.id_str] then return true end - if self.config.moderation.admins[msg.from.id_str] then return true end - if self.database.moderation[msg.chat.id_str][msg.from.id_str] then return true end - - if antisquig[msg.from.id] == true then - return - end - antisquig[msg.from.id] = true - - bindings.sendReply(self, msg, self.config.moderation.errors.antisquig) - bindings.sendMessage(self, self.config.moderation.admin_group, '/kick ' .. msg.from.id .. ' from ' .. math.abs(msg.chat.id)) - bindings.sendMessage(self, self.config.moderation.admin_group, 'ANTISQUIG: ' .. msg.from.first_name .. ' kicked from ' .. msg.chat.title .. '.') - - end - end - - moderation.triggers = {} - for trigger,_ in pairs(commands) do - if trigger[-1] == '$' then - tables.insert(moderation.triggers, trigger:sub(1, -2)..'@'..self.info.username..'$') - else - tables.insert(moderation.triggers, trigger..'%s+[^%s]*') - tables.insert(moderation.triggers, trigger..'@'..self.info.username..'%s+[^%s]*') - tables.insert(moderation.triggers, trigger..'$') - tables.insert(moderation.triggers, trigger..'@'..self.info.username..'$') - end - end -end - -function moderation:action(msg) - - for trigger,command in pairs(commands) do - if string.match(msg.text_lower, trigger) then - local output = command(self, msg) - if output == true then - return true - elseif output then - bindings.sendReply(self, msg, output) - end - return - end - end - - return true - -end - - -- When a user is kicked for squiggles, his ID is added to this table. - -- That user will not be kicked again as long as his ID is in the table. - -- The table is emptied every five seconds. - -- Thus the bot will not spam the group or admin group when a user posts more than one infringing messages. -function moderation:cron() - - antisquig = {} - -end - -return moderation diff --git a/plugins/preview.lua b/plugins/preview.lua index 3a6fb0e..34af40b 100644 --- a/plugins/preview.lua +++ b/plugins/preview.lua @@ -11,7 +11,7 @@ Returns a full-message, "unlinked" preview. ```]] function preview:init() - preview.triggers = utilities.triggers(self.info.username):t('preview').table + preview.triggers = utilities.triggers(self.info.username):t('preview', true).table end function preview:action(msg)