53 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
			
		
		
	
	
			53 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
local shout = {}
 | 
						|
 | 
						|
local utilities = require('otouto.utilities')
 | 
						|
 | 
						|
shout.command = 'shout <text>'
 | 
						|
 | 
						|
function shout:init(config)
 | 
						|
	shout.triggers = utilities.triggers(self.info.username, config.cmd_pat):t('shout', true).table
 | 
						|
	shout.doc = [[```
 | 
						|
]]..config.cmd_pat..[[shout <text>
 | 
						|
Shouts something. Input may be the replied-to message.
 | 
						|
```]]
 | 
						|
end
 | 
						|
 | 
						|
function shout:action(msg)
 | 
						|
 | 
						|
	local input = utilities.input(msg.text)
 | 
						|
	if not input then
 | 
						|
		if msg.reply_to_message and #msg.reply_to_message.text > 0 then
 | 
						|
			input = msg.reply_to_message.text
 | 
						|
		else
 | 
						|
			utilities.send_message(self, msg.chat.id, shout.doc, true, msg.message_id, true)
 | 
						|
			return
 | 
						|
		end
 | 
						|
	end
 | 
						|
	input = utilities.trim(input)
 | 
						|
 | 
						|
	if input:len() > 20 then
 | 
						|
		input = input:sub(1,20)
 | 
						|
	end
 | 
						|
 | 
						|
	input = input:upper()
 | 
						|
	local output = ''
 | 
						|
	local inc = 0
 | 
						|
	for match in input:gmatch('([%z\1-\127\194-\244][\128-\191]*)') do
 | 
						|
		output = output .. match .. ' '
 | 
						|
	end
 | 
						|
	output = output .. '\n'
 | 
						|
	for match in input:sub(2):gmatch('([%z\1-\127\194-\244][\128-\191]*)') do
 | 
						|
		local spacing = ''
 | 
						|
		for _ = 1, inc do
 | 
						|
			spacing = spacing .. '  '
 | 
						|
		end
 | 
						|
		inc = inc + 1
 | 
						|
		output = output .. match .. ' ' .. spacing .. match .. '\n'
 | 
						|
	end
 | 
						|
	output = '```\n' .. utilities.trim(output) .. '\n```'
 | 
						|
	utilities.send_message(self, msg.chat.id, output, true, false, true)
 | 
						|
 | 
						|
end
 | 
						|
 | 
						|
return shout
 |