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 ('Erstelle neue Zitat Datei '..quotes_file)
        serialize_to_file({}, quotes_file)
    else
        print ('Zitate geladen: '..quotes_file)
        f:close()
    end
    return loadfile (quotes_file)()
end

function save_quote(msg)
    local to_id = tostring(msg.to.id)

    if msg.text:sub(11):isempty() then
        return "Verwendung: /addquote [Text]"
    end

    if quotes_table == nil then
        quotes_table = {}
    end

    if quotes_table[to_id] == nil then
        print ('Neuer quote key to_id: '..to_id)
        quotes_table[to_id] = {}
    end

    local quotes = quotes_table[to_id]
    quotes[#quotes+1] = msg.text:sub(11)

    serialize_to_file(quotes_table, quotes_file)

    return "Neues Zitat hinzugefügt!"
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)
    if string.match(msg.text, "/quote$") then
        return get_quote(msg)
    elseif string.match(msg.text, "/addquote (.+)$") then
        quotes_table = read_quotes_file()
        return save_quote(msg)
    end
end

return {
    description = "Speichert Zitate",
    usage = {"/addquote [Text]","/quote",},
    patterns = {"^/addquote (.+)$","^/quote$",},
    run = run
}