help.lua: Provides start link when unable to send a user the help message privately.
administration.lua: 1.10.3: /gadd now supports arguments.
This commit is contained in:
		| @@ -195,12 +195,12 @@ Additionally, antiflood can be configured to automatically ban a user after he h | ||||
| * * * | ||||
|  | ||||
| ## Introduction | ||||
| #todo | ||||
| ####todo | ||||
|  | ||||
| ## Plugins | ||||
| otouto uses a robust plugin system, similar to yagop's [Telegram-Bot](http://github.com/yagop/telegram-bot). The aim of the otouto project is to contain any desirable bot feature within one universal bot framework. | ||||
| otouto uses a robust plugin system, similar to yagop's [Telegram-Bot](http://github.com/yagop/telegram-bot). | ||||
|  | ||||
| Most plugins are intended for public use, but a few are for other purposes, like those used alongside [Liberbot](#liberbot-related-plugins), or for [use by the bot's owner](#control-plugins). See [here](#list-of-plugins) for a list of plugins. | ||||
| Most plugins are intended for public use, but a few are for other purposes, like those for [use by the bot's owner](#control-plugins). See [here](#list-of-plugins) for a list of plugins. | ||||
|  | ||||
| A plugin can have five components, and two of them are required: | ||||
|  | ||||
|   | ||||
							
								
								
									
										7
									
								
								bot.lua
									
									
									
									
									
								
							
							
						
						
									
										7
									
								
								bot.lua
									
									
									
									
									
								
							| @@ -31,6 +31,9 @@ function bot:init() -- The function run when the bot is started or reloaded. | ||||
| 		self.database = utilities.load_data(self.info.username..'.db') | ||||
| 	end | ||||
|  | ||||
| 	self.database.users = self.database.users or {} -- Table to cache userdata. | ||||
| 	self.database.users[tostring(self.info.id)] = self.info | ||||
|  | ||||
| 	self.plugins = {} -- Load plugins. | ||||
| 	for _,v in ipairs(self.config.plugins) do | ||||
| 		local p = require('plugins.'..v) | ||||
| @@ -43,8 +46,6 @@ function bot:init() -- The function run when the bot is started or reloaded. | ||||
| 	self.last_update = self.last_update or 0 -- Set loop variables: Update offset, | ||||
| 	self.last_cron = self.last_cron or os.date('%M') -- the time of the last cron job, | ||||
| 	self.is_started = true -- and whether or not the bot should be running. | ||||
| 	self.database.users = self.database.users or {} -- Table to cache userdata. | ||||
| 	self.database.users[tostring(self.info.id)] = self.info | ||||
|  | ||||
| end | ||||
|  | ||||
| @@ -105,7 +106,7 @@ function bot:run() | ||||
| 				end | ||||
| 			end | ||||
| 		else | ||||
| 			print('Connection error fetching updates.') | ||||
| 			print('Connection error while fetching updates.') | ||||
| 		end | ||||
|  | ||||
| 		if self.last_cron ~= os.date('%M') then -- Run cron jobs every minute. | ||||
|   | ||||
| @@ -32,6 +32,13 @@ | ||||
|  | ||||
| 	1.10.1 - Bug fixes and minor improvements. :^) | ||||
|  | ||||
| 	1.10.2 - Fixed bug in antibot. Further, ranks 2+ will be automatically made | ||||
| 	 group admins when they join a group. | ||||
|  | ||||
| 	1.10.3 - /gadd now supports arguments to enable flags immediately, eg: | ||||
| 	 "/gadd 1 4 5" will add a grouo with the unlisted, antibot, and antiflood | ||||
| 	 flags. | ||||
|  | ||||
| ]]-- | ||||
|  | ||||
| local JSON = require('dkjson') | ||||
| @@ -672,6 +679,7 @@ function administration.init_command(self_) | ||||
| 					utilities.send_reply(self, msg, 'I can\'t let you do that, '..msg.from.name..'.') | ||||
| 				else | ||||
| 					administration.kick_user(self, msg.chat.id, msg.from.id, 'kickme') | ||||
| 					utilities.send_message(self, msg.chat.id, 'Goodbye, ' .. msg.from.name .. '!', true) | ||||
| 					if msg.chat.type == 'supergroup' then | ||||
| 						bindings.unbanChatMember(self, { chat_id = msg.chat.id, user_id = msg.from.id } ) | ||||
| 					end | ||||
| @@ -789,7 +797,7 @@ function administration.init_command(self_) | ||||
| 			command = 'changerule <i> <rule>', | ||||
| 			privilege = 3, | ||||
| 			interior = true, | ||||
| 			doc = 'Changes a single rule. Pass "--" to delete the rule.', | ||||
| 			doc = 'Changes a single rule. Pass "--" to delete the rule. If i is a number for which there is no rule, adds a rule by the next incremented number.', | ||||
|  | ||||
| 			action = function(self, msg, group) | ||||
| 				local input = utilities.input(msg.text) | ||||
| @@ -1190,22 +1198,36 @@ function administration.init_command(self_) | ||||
| 		}, | ||||
|  | ||||
| 		{ -- /gadd | ||||
| 			triggers = utilities.triggers(self_.info.username):t('gadd').table, | ||||
| 			triggers = utilities.triggers(self_.info.username):t('gadd', true).table, | ||||
|  | ||||
| 			command = 'gadd', | ||||
| 			command = 'gadd [i] ...', | ||||
| 			privilege = 5, | ||||
| 			interior = false, | ||||
| 			doc = 'Adds a group to the administration system.', | ||||
| 			doc = 'Adds a group to the administration system. Pass numbers as arguments to enable those flags immediately. For example, this would add the group and enable the unlisted flag, antibot, and antiflood:\n/gadd 1 4 5', | ||||
|  | ||||
| 			action = function(self, msg) | ||||
| 				if self.database.administration.groups[msg.chat.id_str] then | ||||
| 					utilities.send_reply(self, msg, 'I am already administrating this group.') | ||||
| 				else | ||||
| 					local flags = {} | ||||
| 					for i = 1, #administration.flags do | ||||
| 						flags[i] = false | ||||
| 					end | ||||
| 					local input = utilities.input(msg.text) | ||||
| 					if input then | ||||
| 						local index = utilities.index(input) | ||||
| 						for _, i in ipairs(index) do | ||||
| 							i = tonumber(i) | ||||
| 							if i and i < #administration.flags and i > 0 then | ||||
| 								flags[i] = true | ||||
| 							end | ||||
| 						end | ||||
| 					end | ||||
| 					self.database.administration.groups[msg.chat.id_str] = { | ||||
| 						mods = {}, | ||||
| 						governor = msg.from.id, | ||||
| 						bans = {}, | ||||
| 						flags = {}, | ||||
| 						flags = flags, | ||||
| 						rules = {}, | ||||
| 						grouptype = msg.chat.type, | ||||
| 						name = msg.chat.title, | ||||
| @@ -1216,9 +1238,6 @@ function administration.init_command(self_) | ||||
| 						autoban = 3 | ||||
| 					} | ||||
| 					administration.update_desc(self, msg.chat.id) | ||||
| 					for i = 1, #administration.flags do | ||||
| 						self.database.administration.groups[msg.chat.id_str].flags[i] = false | ||||
| 					end | ||||
| 					table.insert(self.database.administration.activity, msg.chat.id_str) | ||||
| 					utilities.send_reply(self, msg, 'I am now administrating this group.') | ||||
| 					drua.channel_set_admin(msg.chat.id, self.info.id, 2) | ||||
|   | ||||
| @@ -39,7 +39,7 @@ function help:action(msg) | ||||
| 	if not input then | ||||
| 		local res = utilities.send_message(self, msg.from.id, help_text, true, nil, true) | ||||
| 		if not res then | ||||
| 			utilities.send_reply(self, msg, 'Please message me privately for a list of commands.') | ||||
| 			utilities.send_reply(self, msg, 'Please message me privately or [click here](http://telegram.me/' .. self.info.username .. '?start=help) for a list of commands.', true) | ||||
| 		elseif msg.chat.type ~= 'private' then | ||||
| 			utilities.send_reply(self, msg, 'I have sent you the requested information in a private message.') | ||||
| 		end | ||||
|   | ||||
| @@ -3,13 +3,16 @@ local patterns = {} | ||||
| local utilities = require('utilities') | ||||
|  | ||||
| patterns.triggers = { | ||||
| 	'^/?s/.-/.-/?$' | ||||
| 	'^/?s/.-/.-$' | ||||
| } | ||||
|  | ||||
| function patterns:action(msg) | ||||
|  | ||||
| 	if not msg.reply_to_message then return end | ||||
| 	local output = msg.reply_to_message.text or '' | ||||
| 	local output = msg.reply_to_message.text | ||||
| 	if msg.reply_to_message.from.id == self.info.id then | ||||
| 		output = output:gsub('Did you mean:\n"', '') | ||||
| 		output = output:gsub('"$', '') | ||||
| 	end | ||||
| 	local m1, m2 = msg.text:match('^/?s/(.-)/(.-)/?$') | ||||
| 	if not m2 then return true end | ||||
| 	local res | ||||
| @@ -21,11 +24,11 @@ function patterns:action(msg) | ||||
| 	if res == false then | ||||
| 		output = 'Malformed pattern!' | ||||
| 		utilities.send_reply(self, msg, output) | ||||
| 		return | ||||
| 	else | ||||
| 		output = output:sub(1, 4000) | ||||
| 		output = 'Did you mean:\n"' .. output .. '"' | ||||
| 		utilities.send_reply(self, msg.reply_to_message, output) | ||||
| 	end | ||||
| 	output = 'Did you mean:\n"' .. output:sub(1, 4000) .. '"' | ||||
| 	utilities.send_reply(self, msg.reply_to_message, output) | ||||
|  | ||||
| end | ||||
|  | ||||
| return patterns | ||||
|   | ||||
		Reference in New Issue
	
	Block a user