 ddaf304460
			
		
	
	ddaf304460
	
	
	
		
			
			Version 1.2.
  Rules are now in a table. Automatic migration until 1.4.
  New command: changerule
    /changerule <i> <rule>
    Change a rule. Use "/changerule 1 --" to delete rule 1.
  ahelp:
    Only displays commands the user can use.
    Attempts to PM before group.
  desc:
    Now displays group's flags and their "short" descs.
    Attemps to PM before group.
  antisquig:
    Second RTL character added to, and Strict.
dilbert.lua:
  New command: dilbert
    /dilbert [YYYY-MM-DD]
    Returns a date's or the latest Dilbert strip.
    Caches strips so they are not downloaded more than once.
gImages.lua & youtube.lua:
  Title now displayed for links.
  The "zero-width non-joiner" was a stupid idea.
help.lua:
  Commands now properly bulleted.
utilities.lua:
  download_file():
    Now allows for specification of a path instead of /tmp/.
		
	
		
			
				
	
	
		
			80 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Lua
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			80 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Lua
		
	
	
		
			Executable File
		
	
	
	
	
|  -- You need a Google API key and a Google Custom Search Engine set up to use this, in config.google_api_key and config.google_cse_key, respectively.
 | |
|  -- You must also sign up for the CSE in the Google Developer Concsole, and enable image results.
 | |
| 
 | |
| if not config.google_api_key then
 | |
| 	print('Missing config value: google_api_key.')
 | |
| 	print('gImages.lua will not be enabled.')
 | |
| 	return
 | |
| elseif not config.google_cse_key then
 | |
| 	print('Missing config value: google_cse_key.')
 | |
| 	print('gImages.lua will not be enabled.')
 | |
| 	return
 | |
| end
 | |
| 
 | |
| local command = 'image <query>'
 | |
| local doc = [[```
 | |
| /image <query>
 | |
| Returns a randomized top result from Google Images. Safe search is enabled by default; use "/insfw" to disable it. NSFW results will not display an image preview.
 | |
| Alias: /i
 | |
| ```]]
 | |
| 
 | |
| local triggers = {
 | |
| 	'^/image[@'..bot.username..']*',
 | |
| 	'^/i[@'..bot.username..']* ',
 | |
| 	'^/i[@'..bot.username..']*$',
 | |
| 	'^/insfw[@'..bot.username..']*'
 | |
| }
 | |
| 
 | |
| local action = function(msg)
 | |
| 
 | |
| 	local input = msg.text:input()
 | |
| 	if not input then
 | |
| 		if msg.reply_to_message and msg.reply_to_message.text then
 | |
| 			input = msg.reply_to_message.text
 | |
| 		else
 | |
| 			sendMessage(msg.chat.id, doc, true, msg.message_id, true)
 | |
| 			return
 | |
| 		end
 | |
| 	end
 | |
| 
 | |
| 	local url = 'https://www.googleapis.com/customsearch/v1?&searchType=image&imgSize=xlarge&alt=json&num=8&start=1&key=' .. config.google_api_key .. '&cx=' .. config.google_cse_key
 | |
| 
 | |
| 	if not string.match(msg.text, '^/i[mage]*nsfw') then
 | |
| 		url = url .. '&safe=high'
 | |
| 	end
 | |
| 
 | |
| 	url = url .. '&q=' .. URL.escape(input)
 | |
| 
 | |
| 	local jstr, res = HTTPS.request(url)
 | |
| 	if res ~= 200 then
 | |
| 		sendReply(msg, config.errors.connection)
 | |
| 		return
 | |
| 	end
 | |
| 
 | |
| 	local jdat = JSON.decode(jstr)
 | |
| 	if jdat.searchInformation.totalResults == '0' then
 | |
| 		sendReply(msg, config.errors.results)
 | |
| 		return
 | |
| 	end
 | |
| 
 | |
| 	local i = math.random(jdat.queries.request[1].count)
 | |
| 	local img_url = jdat.items[i].link
 | |
| 	local img_title = jdat.items[i].title
 | |
| 	local output = '[' .. img_title .. '](' .. img_url .. ')'
 | |
| 
 | |
| 
 | |
| 	if msg.text:match('nsfw') then
 | |
| 		sendReply(msg, result)
 | |
| 	else
 | |
| 		sendMessage(msg.chat.id, output, false, nil, true)
 | |
| 	end
 | |
| 
 | |
| end
 | |
| 
 | |
| return {
 | |
| 	action = action,
 | |
| 	triggers = triggers,
 | |
| 	doc = doc,
 | |
| 	command = command
 | |
| }
 |