Merge branch 'master' into less-magic
This commit is contained in:
		| @@ -16,13 +16,13 @@ function about:action(msg) | ||||
| 	-- other plugins. | ||||
| 	if msg.forward_from then return end | ||||
|  | ||||
| 	local message = self.config.about_text .. '\nBased on @otouto v'..bot.version..' by topkecleon.' | ||||
| 	local output = self.config.about_text .. '\nBased on @otouto v'..bot.version..' by topkecleon.' | ||||
|  | ||||
| 	if (msg.new_chat_participant and msg.new_chat_participant.id == self.info.id) | ||||
| 		or msg.text_lower:match('^/about') | ||||
| 		or msg.text_lower:match('^/about@'..self.info.username:lower()) | ||||
| 	or msg.text_lower:match('^/start') then | ||||
| 		bindings.sendMessage(self, msg.chat.id, message, true) | ||||
| 		bindings.sendMessage(self, msg.chat.id, output, true) | ||||
| 		return | ||||
| 	end | ||||
|  | ||||
|   | ||||
| @@ -17,19 +17,19 @@ local fullnames = { "Wimbledon Tennismatch", "Rinkydink Curdlesnoot", "Butawhite | ||||
|  | ||||
| local firstnames = { "Bumblebee", "Bandersnatch", "Broccoli", "Rinkydink", "Bombadil", "Boilerdang", "Bandicoot", "Fragglerock", "Muffintop", "Congleton", "Blubberdick", "Buffalo", "Benadryl", "Butterfree", "Burberry", "Whippersnatch", "Buttermilk", "Beezlebub", "Budapest", "Boilerdang", "Blubberwhale", "Bumberstump", "Bulbasaur", "Cogglesnatch", "Liverswort", "Bodybuild", "Johnnycash", "Bendydick", "Burgerking", "Bonaparte", "Bunsenburner", "Billiardball", "Bukkake", "Baseballmitt", "Blubberbutt", "Baseballbat", "Rumblesack", "Barister", "Danglerack", "Rinkydink", "Bombadil", "Honkytonk", "Billyray", "Bumbleshack", "Snorkeldink", "Anglerfish", "Beetlejuice", "Bedlington", "Bandicoot", "Boobytrap", "Blenderdick", "Bentobox", "Anallube", "Pallettown", "Wimbledon", "Buttercup", "Blasphemy", "Snorkeldink", "Brandenburg", "Barbituate", "Snozzlebert", "Tiddleywomp", "Bouillabaisse", "Wellington", "Benetton", "Bendandsnap", "Timothy", "Brewery", "Bentobox", "Brandybuck", "Benjamin", "Buckminster", "Bourgeoisie", "Bakery", "Oscarbait", "Buckyball", "Bourgeoisie", "Burlington", "Buckingham", "Barnoldswick" } | ||||
|  | ||||
| local lastnames = { "Coddleswort", "Crumplesack", "Curdlesnoot", "Calldispatch", "Humperdinck", "Rivendell", "Cuttlefish", "Lingerie", "Vegemite", "Ampersand", "Cumberbund", "Candycrush", "Clombyclomp", "Cragglethatch", "Nottinghill", "Cabbagepatch", "Camouflage","Creamsicle", "Curdlemilk", "Upperclass", "Frumblesnatch", "Crumplehorn", "Talisman", "Candlestick", "Chesterfield", "Bumbersplat", "Scratchnsniff", "Snugglesnatch", "Charizard", "Carrotstick", "Cumbercooch", "Crackerjack", "Crucifix", "Cuckatoo", "Cockletit", "Collywog", "Capncrunch", "Covergirl", "Cumbersnatch", "Countryside","Coggleswort", "Splishnsplash", "Copperwire", "Animorph", "Curdledmilk", "Cheddarcheese", "Cottagecheese", "Crumplehorn", "Snickersbar", "Banglesnatch", "Stinkyrash", "Cameltoe", "Chickenbroth", "Concubine", "Candygram", "Moldyspore", "Chuckecheese", "Cankersore", "Crimpysnitch", "Wafflesmack", "Chowderpants", "Toodlesnoot", "Clavichord", "Cuckooclock", "Oxfordshire", "Cumbersome", "Chickenstrips", "Battleship", "Commonwealth", "Cunningsnatch", "Custardbath", "Kryptonite", "Curdlesnoot", "Cummerbund", "Coochyrash", "Crackerdong", "Crackerdong", "Curdledong", "Crackersprout", "Crumplebutt", "Colonist", "Coochierash", "Thundersnatch" } | ||||
| local lastnames = { "Coddleswort", "Crumplesack", "Curdlesnoot", "Calldispatch", "Humperdinck", "Rivendell", "Cuttlefish", "Lingerie", "Vegemite", "Ampersand", "Cumberbund", "Candycrush", "Clombyclomp", "Cragglethatch", "Nottinghill", "Cabbagepatch", "Camouflage", "Creamsicle", "Curdlemilk", "Upperclass", "Frumblesnatch", "Crumplehorn", "Talisman", "Candlestick", "Chesterfield", "Bumbersplat", "Scratchnsniff", "Snugglesnatch", "Charizard", "Carrotstick", "Cumbercooch", "Crackerjack", "Crucifix", "Cuckatoo", "Cockletit", "Collywog", "Capncrunch", "Covergirl", "Cumbersnatch", "Countryside", "Coggleswort", "Splishnsplash", "Copperwire", "Animorph", "Curdledmilk", "Cheddarcheese", "Cottagecheese", "Crumplehorn", "Snickersbar", "Banglesnatch", "Stinkyrash", "Cameltoe", "Chickenbroth", "Concubine", "Candygram", "Moldyspore", "Chuckecheese", "Cankersore", "Crimpysnitch", "Wafflesmack", "Chowderpants", "Toodlesnoot", "Clavichord", "Cuckooclock", "Oxfordshire", "Cumbersome", "Chickenstrips", "Battleship", "Commonwealth", "Cunningsnatch", "Custardbath", "Kryptonite", "Curdlesnoot", "Cummerbund", "Coochyrash", "Crackerdong", "Crackerdong", "Curdledong", "Crackersprout", "Crumplebutt", "Colonist", "Coochierash", "Thundersnatch" } | ||||
|  | ||||
| function bandersnatch:action(msg) | ||||
|  | ||||
| 	local message | ||||
| 	local output | ||||
|  | ||||
| 	if math.random(10) == 10 then | ||||
| 		message = fullnames[math.random(#fullnames)] | ||||
| 		output = fullnames[math.random(#fullnames)] | ||||
| 	else | ||||
| 		message = firstnames[math.random(#firstnames)] .. ' ' .. lastnames[math.random(#lastnames)] | ||||
| 		output = firstnames[math.random(#firstnames)] .. ' ' .. lastnames[math.random(#lastnames)] | ||||
| 	end | ||||
|  | ||||
| 	bindings.sendReply(self, msg, message) | ||||
| 	bindings.sendReply(self, msg, output) | ||||
|  | ||||
| end | ||||
|  | ||||
|   | ||||
| @@ -32,22 +32,22 @@ function bible:action(msg) | ||||
|  | ||||
| 	local url = 'http://api.biblia.com/v1/bible/content/ASV.txt?key=' .. self.config.biblia_api_key .. '&passage=' .. URL.escape(input) | ||||
|  | ||||
| 	local message, res = HTTP.request(url) | ||||
| 	local output, res = HTTP.request(url) | ||||
|  | ||||
| 	if not message or res ~= 200 or message:len() == 0 then | ||||
| 	if not output or res ~= 200 or output:len() == 0 then | ||||
| 		url = 'http://api.biblia.com/v1/bible/content/KJVAPOC.txt?key=' .. self.config.biblia_api_key .. '&passage=' .. URL.escape(input) | ||||
| 		message, res = HTTP.request(url) | ||||
| 		output, res = HTTP.request(url) | ||||
| 	end | ||||
|  | ||||
| 	if not message or res ~= 200  or message:len() == 0 then | ||||
| 		message = self.config.errors.results | ||||
| 	if not output or res ~= 200  or output:len() == 0 then | ||||
| 		output = self.config.errors.results | ||||
| 	end | ||||
|  | ||||
| 	if message:len() > 4000 then | ||||
| 		message = 'The text is too long to post here. Try being more specific.' | ||||
| 	if output:len() > 4000 then | ||||
| 		output = 'The text is too long to post here. Try being more specific.' | ||||
| 	end | ||||
|  | ||||
| 	bindings.sendReply(self, msg, message) | ||||
| 	bindings.sendReply(self, msg, output) | ||||
|  | ||||
| end | ||||
|  | ||||
|   | ||||
| @@ -63,10 +63,10 @@ function chatter:action(msg) | ||||
| 		bindings.sendMessage(self, msg.chat.id, self.config.errors.chatter_response) | ||||
| 		return | ||||
| 	end | ||||
| 	local message = jdat.response | ||||
| 	local output = jdat.response | ||||
|  | ||||
| 	if message:match('^I HAVE NO RESPONSE.') then | ||||
| 		message = self.config.errors.chatter_response | ||||
| 	if output:match('^I HAVE NO RESPONSE.') then | ||||
| 		output = self.config.errors.chatter_response | ||||
| 	end | ||||
|  | ||||
| 	-- Let's clean up the response a little. Capitalization & punctuation. | ||||
| @@ -78,14 +78,14 @@ function chatter:action(msg) | ||||
| 	} | ||||
|  | ||||
| 	for k,v in pairs(filter) do | ||||
| 		message = string.gsub(message, k, v) | ||||
| 		output = string.gsub(output, k, v) | ||||
| 	end | ||||
|  | ||||
| 	if not string.match(message, '%p$') then | ||||
| 		message = message .. '.' | ||||
| 	if not string.match(output, '%p$') then | ||||
| 		output = output .. '.' | ||||
| 	end | ||||
|  | ||||
| 	bindings.sendMessage(self, msg.chat.id, message) | ||||
| 	bindings.sendMessage(self, msg.chat.id, output) | ||||
|  | ||||
| end | ||||
|  | ||||
|   | ||||
| @@ -423,7 +423,8 @@ local commits = { | ||||
|  | ||||
| function commit:action(msg) | ||||
|  | ||||
| 	bindings.sendMessage(self, msg.chat.id, '`'..commits[math.random(#commits)]..'`', true, nil, true) | ||||
| 	local output = '`'..commits[math.random(#commits)]..'`' | ||||
| 	bindings.sendMessage(self, msg.chat.id, output, true, nil, true) | ||||
|  | ||||
| end | ||||
|  | ||||
|   | ||||
| @@ -52,8 +52,7 @@ function currency:action(msg) | ||||
| 	end | ||||
|  | ||||
| 	local output = amount .. ' ' .. from .. ' = ' .. result .. ' ' .. to .. '\n\n' | ||||
| 	output = output .. os.date('!%F %T UTC') .. '\nSource: Google Finance' | ||||
| 	output = '`' .. output .. '`' | ||||
| 	output = output .. '`' .. os.date('!%F %T UTC') .. '\nSource: Google Finance`' | ||||
|  | ||||
| 	bindings.sendMessage(self, msg.chat.id, output, true, nil, true) | ||||
|  | ||||
|   | ||||
| @@ -22,9 +22,9 @@ function echo:action(msg) | ||||
| 	else | ||||
| 		local output | ||||
| 		if msg.chat.type == 'supergroup' then | ||||
| 			output = 'Echo:\n"' .. input .. '"' | ||||
| 			output = '*Echo:*\n"' .. utilities.md_escape(input) .. '"' | ||||
| 		else | ||||
| 			output = utilities.latcyr(input) | ||||
| 			output = utilities.md_escape(utilities.latcyr(input)) | ||||
| 		end | ||||
| 		bindings.sendMessage(self, msg.chat.id, output, true) | ||||
| 	end | ||||
|   | ||||
| @@ -43,15 +43,15 @@ local yesno_answers = { | ||||
|  | ||||
| function eightball:action(msg) | ||||
|  | ||||
| 	local message | ||||
| 	local output | ||||
|  | ||||
| 	if msg.text_lower:match('y/n%p?$') then | ||||
| 		message = yesno_answers[math.random(#yesno_answers)] | ||||
| 		output = yesno_answers[math.random(#yesno_answers)] | ||||
| 	else | ||||
| 		message = ball_answers[math.random(#ball_answers)] | ||||
| 		output = ball_answers[math.random(#ball_answers)] | ||||
| 	end | ||||
|  | ||||
| 	bindings.sendReply(self, msg, message) | ||||
| 	bindings.sendReply(self, msg, output) | ||||
|  | ||||
| end | ||||
|  | ||||
|   | ||||
| @@ -21,8 +21,10 @@ fortune.doc = '`Returns a UNIX fortune.`' | ||||
|  | ||||
| function fortune:action(msg) | ||||
|  | ||||
| 	local message = io.popen('fortune'):read('*all') | ||||
| 	bindings.sendMessage(self, msg.chat.id, message) | ||||
| 	local fortunef = io.popen('fortune') | ||||
| 	local output = fortunef:read('*all') | ||||
| 	bindings.sendMessage(self, msg.chat.id, output) | ||||
| 	fortunef:close() | ||||
|  | ||||
| end | ||||
|  | ||||
|   | ||||
| @@ -69,7 +69,7 @@ function gImages:action(msg) | ||||
|  | ||||
|  | ||||
| 	if msg.text:match('nsfw') then | ||||
| 		bindings.sendReply(self, msg, output) | ||||
| 		bindings.sendReply(self, '*NSFW*\n'..msg, output) | ||||
| 	else | ||||
| 		bindings.sendMessage(self, msg.chat.id, output, false, nil, true) | ||||
| 	end | ||||
|   | ||||
| @@ -43,10 +43,10 @@ function imdb:action(msg) | ||||
| 		return | ||||
| 	end | ||||
|  | ||||
| 	local output = '[' .. jdat.Title .. '](http://imdb.com/title/' | ||||
| 	output = output .. jdat.imdbID .. ') ('.. jdat.Year ..')\n' | ||||
| 	local output = '*' .. jdat.Title .. ' ('.. jdat.Year ..')*\n' | ||||
| 	output = output .. jdat.imdbRating ..'/10 | '.. jdat.Runtime ..' | '.. jdat.Genre ..'\n' | ||||
| 	output = output .. jdat.Plot | ||||
| 	output = output .. '_' .. jdat.Plot .. '_\n' | ||||
| 	output = output .. '[*Read more*](http://imdb.com/title/' .. jdat.imdbID .. ')' | ||||
|  | ||||
| 	bindings.sendMessage(self, msg.chat.id, output, true, nil, true) | ||||
|  | ||||
|   | ||||
| @@ -48,14 +48,14 @@ function lastfm:action(msg) | ||||
| 	local url = 'http://ws.audioscrobbler.com/2.0/?method=user.getrecenttracks&format=json&limit=1&api_key=' .. self.config.lastfm_api_key .. '&user=' | ||||
|  | ||||
| 	local username | ||||
| 	local output = '' | ||||
| 	local alert = '' | ||||
| 	if input then | ||||
| 		username = input | ||||
| 	elseif self.database.users[msg.from.id_str].lastfm then | ||||
| 		username = self.database.users[msg.from.id_str].lastfm | ||||
| 	elseif msg.from.username then | ||||
| 		username = msg.from.username | ||||
| 		output = '\n\nYour username has been set to ' .. username .. '.\nTo change it, use /fmset <username>.' | ||||
| 		alert = '\n\nYour username has been set to ' .. username .. '.\nTo change it, use /fmset <username>.' | ||||
| 		self.database.users[msg.from.id_str].lastfm = username | ||||
| 	else | ||||
| 		bindings.sendReply(self, msg, 'Please specify your last.fm username or set it with /fmset.') | ||||
| @@ -82,17 +82,17 @@ function lastfm:action(msg) | ||||
|  | ||||
| 	jdat = jdat.recenttracks.track[1] or jdat.recenttracks.track | ||||
| 	if not jdat then | ||||
| 		bindings.sendReply(self, msg, 'No history for this user.' .. output) | ||||
| 		bindings.sendReply(self, msg, 'No history for this user.' .. alert) | ||||
| 		return | ||||
| 	end | ||||
|  | ||||
| 	local message = input or msg.from.first_name | ||||
| 	message = '🎵  ' .. message | ||||
| 	local output = input or msg.from.first_name | ||||
| 	output = '🎵  ' .. output | ||||
|  | ||||
| 	if jdat['@attr'] and jdat['@attr'].nowplaying then | ||||
| 		message = message .. ' is currently listening to:\n' | ||||
| 		output = output .. ' is currently listening to:\n' | ||||
| 	else | ||||
| 		message = message .. ' last listened to:\n' | ||||
| 		output = output .. ' last listened to:\n' | ||||
| 	end | ||||
|  | ||||
| 	local title = jdat.name or 'Unknown' | ||||
| @@ -101,8 +101,8 @@ function lastfm:action(msg) | ||||
| 		artist = jdat.artist['#text'] | ||||
| 	end | ||||
|  | ||||
| 	message = message .. title .. ' - ' .. artist .. output | ||||
| 	bindings.sendMessage(self, msg.chat.id, message) | ||||
| 	output = output .. title .. ' - ' .. artist .. alert | ||||
| 	bindings.sendMessage(self, msg.chat.id, output) | ||||
|  | ||||
| end | ||||
|  | ||||
|   | ||||
| @@ -34,10 +34,10 @@ function librefm:action(msg) | ||||
| 		if not input then | ||||
| 			bindings.sendMessage(self, msg.chat.id, librefm.doc, true, msg.message_id, true) | ||||
| 		elseif input == '-' then | ||||
| 			self.database.lastfm[msg.from.id_str] = nil | ||||
| 			self.database.librefm[msg.from.id_str] = nil | ||||
| 			bindings.sendReply(self, msg, 'Your libre.fm username has been forgotten.') | ||||
| 		else | ||||
| 			self.database.lastfm[msg.from.id_str] = input | ||||
| 			self.database.librefm[msg.from.id_str] = input | ||||
| 			bindings.sendReply(self, msg, 'Your libre.fm username has been set to "' .. input .. '".') | ||||
| 		end | ||||
| 		return | ||||
| @@ -46,15 +46,15 @@ function librefm:action(msg) | ||||
| 	local url = 'http://alpha.libre.fm/2.0/?method=user.getrecenttracks&format=json&limit=1&api_key=0&user=' | ||||
|  | ||||
| 	local username | ||||
| 	local output = '' | ||||
| 	local alert = '' | ||||
| 	if input then | ||||
| 		username = input | ||||
| 	elseif self.database.lastfm[msg.from.id_str] then | ||||
| 		username = self.database.lastfm[msg.from.id_str] | ||||
| 	elseif self.database.librefm[msg.from.id_str] then | ||||
| 		username = self.database.librefm[msg.from.id_str] | ||||
| 	elseif msg.from.username then | ||||
| 		username = msg.from.username | ||||
| 		output = '\n\nYour username has been set to ' .. username .. '.\nTo change it, use /lfmset <username>.' | ||||
| 		self.database.lastfm[msg.from.id_str] = username | ||||
| 		alert = '\n\nYour username has been set to ' .. username .. '.\nTo change it, use /lfmset <username>.' | ||||
| 		self.database.librefm[msg.from.id_str] = username | ||||
| 	else | ||||
| 		bindings.sendReply(self, msg, 'Please specify your libre.fm username or set it with /lfmset.') | ||||
| 		return | ||||
| @@ -76,17 +76,17 @@ function librefm:action(msg) | ||||
|  | ||||
| 	jdat = jdat.recenttracks.track[1] or jdat.recenttracks.track | ||||
| 	if not jdat then | ||||
| 		bindings.sendReply(self, msg, 'No history for this user.' .. output) | ||||
| 		bindings.sendReply(self, msg, 'No history for this user.' .. alert) | ||||
| 		return | ||||
| 	end | ||||
|  | ||||
| 	local message = input or msg.from.first_name | ||||
| 	message = '🎵  ' .. message | ||||
| 	local output = input or msg.from.first_name | ||||
| 	output = '🎵  ' .. output | ||||
|  | ||||
| 	if jdat['@attr'] and jdat['@attr'].nowplaying then | ||||
| 		message = message .. ' is currently listening to:\n' | ||||
| 		output = output .. ' is currently listening to:\n' | ||||
| 	else | ||||
| 		message = message .. ' last listened to:\n' | ||||
| 		output = output .. ' last listened to:\n' | ||||
| 	end | ||||
|  | ||||
| 	local title = jdat.name or 'Unknown' | ||||
| @@ -95,8 +95,8 @@ function librefm:action(msg) | ||||
| 		artist = jdat.artist['#text'] | ||||
| 	end | ||||
|  | ||||
| 	message = message .. title .. ' - ' .. artist .. output | ||||
| 	bindings.sendMessage(self, msg.chat.id, message) | ||||
| 	output = output .. title .. ' - ' .. artist .. alert | ||||
| 	bindings.sendMessage(self, msg.chat.id, output) | ||||
|  | ||||
| end | ||||
|  | ||||
|   | ||||
| @@ -10,7 +10,8 @@ function ping:init() | ||||
| end | ||||
|  | ||||
| function ping:action(msg) | ||||
| 	bindings.sendMessage(self, msg.chat.id, msg.text_lower:match('^/ping') and 'Pong!' or 'Annyong.') | ||||
| 	local output = msg.text_lower:match('^/ping') and 'Pong!' or 'Annyong.' | ||||
| 	bindings.sendMessage(self, msg.chat.id, output) | ||||
| end | ||||
|  | ||||
| return ping | ||||
|   | ||||
| @@ -76,8 +76,8 @@ function remind:cron() | ||||
| 			-- If the reminder is past-due, send it and nullify it. | ||||
| 			-- Otherwise, add it to the replacement table. | ||||
| 			if time > reminder.time then | ||||
| 				local output = 'Reminder:\n"' .. reminder.message .. '"' | ||||
| 				local res = bindings.sendMessage(self, chat_id, output, true) | ||||
| 				local output = '*Reminder:*\n"' .. utilities.md_escape(reminder.message) .. '"' | ||||
| 				local res = bindings.sendMessage(self, chat_id, output, true, nil, true) | ||||
| 				-- If the message fails to send, save it for later. | ||||
| 				if not res then | ||||
| 					table.insert(new_group, reminder) | ||||
|   | ||||
| @@ -53,9 +53,9 @@ function time:action(msg) | ||||
| 	else | ||||
| 		utcoff = utilities.pretty_float(utcoff) | ||||
| 	end | ||||
| 	local message = os.date('!%I:%M %p\n', timestamp) .. os.date('!%A, %B %d, %Y\n', timestamp) .. jdat.timeZoneName .. ' (UTC' .. utcoff .. ')' | ||||
| 	local output = '`' .. os.date('!%I:%M %p\n', timestamp) .. os.date('!%A, %B %d, %Y\n', timestamp) .. jdat.timeZoneName .. ' (UTC' .. utcoff .. ')``' | ||||
|  | ||||
| 	bindings.sendReply(self, msg, message) | ||||
| 	bindings.sendReply(self, msg, output) | ||||
|  | ||||
| end | ||||
|  | ||||
|   | ||||
| @@ -43,7 +43,7 @@ function translate:action(msg) | ||||
| 	end | ||||
|  | ||||
| 	local output = jdat.text[1] | ||||
| 	output = 'Translation:\n"' .. output .. '"' | ||||
| 	output = '*Translation:*\n"' .. utilities.md_escape(output) .. '"' | ||||
|  | ||||
| 	bindings.sendReply(self, msg.reply_to_message or msg, output) | ||||
|  | ||||
|   | ||||
| @@ -55,9 +55,9 @@ function weather:action(msg) | ||||
|  | ||||
| 	local celsius = string.format('%.2f', jdat.main.temp - 273.15) | ||||
| 	local fahrenheit = string.format('%.2f', celsius * (9/5) + 32) | ||||
| 	local message = celsius .. '°C | ' .. fahrenheit .. '°F, ' .. jdat.weather[1].description .. '.' | ||||
| 	local output = '`' .. celsius .. '°C | ' .. fahrenheit .. '°F, ' .. jdat.weather[1].description .. '.`' | ||||
|  | ||||
| 	bindings.sendReply(self, msg, message) | ||||
| 	bindings.sendReply(self, msg, output) | ||||
|  | ||||
| end | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Brayden Banks
					Brayden Banks