From 94568cf25cb205b7b7c00c3e47c77301e2a72881 Mon Sep 17 00:00:00 2001 From: PotHix Date: Thu, 12 Feb 2015 20:50:53 -0200 Subject: [PATCH] Added the ability to quote users texts by chat. quotes_set does the job of saving users quotes by using the following command: !addquote text to be quoted quotes_get retrieve quotes stored by using `!quote` command. --- plugins/quotes_get.lua | 37 ++++++++++++++++++++++++++++ plugins/quotes_set.lua | 56 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 93 insertions(+) create mode 100644 plugins/quotes_get.lua create mode 100644 plugins/quotes_set.lua diff --git a/plugins/quotes_get.lua b/plugins/quotes_get.lua new file mode 100644 index 0000000..9663ac3 --- /dev/null +++ b/plugins/quotes_get.lua @@ -0,0 +1,37 @@ +do + local quotes_file = './data/quotes.lua' + local quotes_table + + function read_quotes_file() + local f = io.open(quotes_file, "r+") + + if f == nil then + serialize_to_file({}, quotes_file) + else + f:close() + end + return loadfile (quotes_file)() + end + + function get_quote(msg) + local to_id = tostring(msg.to.id) + local quotes_phrases + + quotes_table = read_quotes_file() + quotes_phrases = quotes_table[to_id] + + return quotes_phrases[math.random(1,#quotes_phrases)] + end + + function run(msg, matches) + return get_quote(msg) + end + + return { + description = "retrieves random quotes", + usage = "!quote", + patterns = { + "^!quote$"}, + run = run + } +end diff --git a/plugins/quotes_set.lua b/plugins/quotes_set.lua new file mode 100644 index 0000000..f568693 --- /dev/null +++ b/plugins/quotes_set.lua @@ -0,0 +1,56 @@ +do + local quotes_file = './data/quotes.lua' + local quotes_table + + function read_quotes_file() + local f = io.open(quotes_file, "r+") + + if f == nil then + print ('Created a new quotes file on '..quotes_file) + serialize_to_file({}, quotes_file) + else + print ('Quotes loaded: '..quotes_file) + f:close() + end + return loadfile (quotes_file)() + end + + function save_quote(msg) + local to_id = tostring(msg.to.id) + local quotes + local phrase + + phrase = string.match(msg.text, "!addquote (.+)") + if (phrase == nil) then + return "Usage: !addquote quote" + end + + if quotes_table == nil then + quotes_table = {} + end + + if quotes_table[to_id] == nil then + print ('New quote key to_id: '..to_id) + quotes_table[to_id] = {} + end + + quotes = quotes_table[to_id] + quotes[#quotes+1] = phrase + + serialize_to_file(quotes_table, quotes_file) + + return "done!" + end + + function run(msg, matches) + quotes_table = read_quotes_file() + return save_quote(msg) + end + + return { + description = "Save quote", + usage = "!addquote (quote)", + patterns = {"^!addquote (.+)$"}, + run = run + } +end