Flere sammenligningsord og tilføjet interval mellem farvel reaktioner.

This commit is contained in:
Jon Michael Aanes 2018-06-08 11:27:44 +02:00
parent b176092c67
commit af949de741

View File

@ -9,6 +9,8 @@ local MEME_OUTPUT = OUTPUT_PATH..'meme.png'
local SERVER_DIR = '/var/shots/b/' local SERVER_DIR = '/var/shots/b/'
local IMAGE_URL_DIR = 'https://dcav.pw/b' local IMAGE_URL_DIR = 'https://dcav.pw/b'
local FARVEL_INTERVAL = 90
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
-- Meme utils -- Meme utils
@ -289,11 +291,23 @@ local function reverse (l0)
return l return l
end end
local COMP_SENTENCES = { local COMP_SENTENCES do
'{A} er bedre end {B}', local ORD_MED_ATTITYDE = {
'{A} er meget bedre end {B}', bedre = 'positiv',
'{B} er dårligere end {A}', dårligere = 'negativ'
} hurtigere = 'positiv'
langsommere = 'negativt'
robust = 'positivt'
}
local COMP_SENTENCES = {}
for ord, attityde in pairs(ORD_MED_ATTITYDE) do
local first, second = '{A}', '{B}'
if attityde == 'negativ' then first, second = second, first end
for _, fmt in ipairs { '%s er %s end %s', '%s er mere %s end %s', '%s er meget %s end %s', '%s %s end %s' } do
table.insert(COMP_SENTENCES, fmt:format(first, ord, second))
end
end
end
for sentence_i, sentence in ipairs(COMP_SENTENCES) do for sentence_i, sentence in ipairs(COMP_SENTENCES) do
local A_pos, B_pos = sentence:find '{A}', sentence:find '{B}' local A_pos, B_pos = sentence:find '{A}', sentence:find '{B}'
@ -364,6 +378,8 @@ local function escape_pattern (text)
return text:gsub('[+-?*]', '%%%1') return text:gsub('[+-?*]', '%%%1')
end end
local FORRIGE_FARVEL = 0
local function handle_message(bot, user, channel, message) local function handle_message(bot, user, channel, message)
-- Direct commands -- Direct commands
if message:lower():match('^'..escape_pattern(BOT_NICK)..'%f[%A]') then if message:lower():match('^'..escape_pattern(BOT_NICK)..'%f[%A]') then
@ -386,14 +402,17 @@ local function handle_message(bot, user, channel, message)
end end
-- Farvel msg -- Farvel msg
for farvel_fmt, possible_answeres in pairs(FARVEL) do if FORRIGE_FARVEL + FARVEL_INTERVAL < os.time() then
if message:match('%f[%a]'..farvel_fmt..'%f[%A]') then for farvel_fmt, possible_answeres in pairs(FARVEL) do
human_delay() if message:match('%f[%a]'..farvel_fmt..'%f[%A]') then
local answer = possible_answeres[math.random(#possible_answeres)] human_delay()
.. (math.random() < 0.5 and ', '..user.nick or '') local answer = possible_answeres[math.random(#possible_answeres)]
.. (math.random() < 0.5 and '!' or '') .. (math.random() < 0.5 and ', '..user.nick or '')
bot:sendChat(channel, answer) .. (math.random() < 0.5 and '!' or '')
return 'SES' bot:sendChat(channel, answer)
FORRIGE_FARVEL = os.time()
return 'SES'
end
end end
end end