do

local function save_stille(msg)
  if msg.text:sub(11):isempty() then
    return "Benutzung: #addstille [Zitat]"
  end
  
  local stille = msg.text:sub(11)
  local hash = 'telegram:stille'
  print('Saving stille to redis set '..hash)
  redis:sadd(hash, stille)
  return 'Gespeichert: "'..stille..'"'
end

local function delete_stille(msg)
  if msg.text:sub(11):isempty() then
    return "Benutzung: #delstille [Zitat]"
  end
  
  local stille = msg.text:sub(11)
  local hash = 'telegram:stille'
  print('Deleting stille from redis set '..hash)
  if redis:sismember(hash, stille) == true then
    redis:srem(hash, stille)
    return 'Zitat erfolgreich gelöscht!'
  else
    return 'Dieses Zitat existiert nicht.'
  end
end

local function get_stille(msg)
  local to_id = tostring(msg.to.id)
  local hash = 'telegram:stille'
  
  if hash then
    print('Getting stille from redis set '..hash)
  	local stille_table = redis:smembers(hash)
	if not stille_table[1] then
	  return 'Es wurden noch keine Zitate gespeichert.\nSpeichere doch welche mit /addstille [Zitat]'
	else
	  return stille_table[math.random(1,#stille_table)]
	end
  end
end

local function list_stilles(msg)
  local hash = 'telegram:stille'
  
  if hash then
    print('Getting stille from redis set '..hash)
    local stille_table = redis:smembers(hash)
	local text = ""
    for num,stille in pairs(stille_table) do
      text = text..num..") "..stille..'\n'
    end
	if not text or text == "" then
	  return 'Es wurden noch keine Zitate gespeichert.\nSpeichere doch welche mit /addstille [Zitat]'
	else
	  return text
	end
  end
end

local function run(msg, matches)
  if string.match(msg.text, '^*?[Ss][Tt][IiUu][Ll][Ll][Ee].?*?$') then
    return get_stille(msg)
  elseif matches[1] == "addstille" then
    if not is_sudo(msg) then
      return "Du kannst diesen Befehl nicht benutzen!"
    else
    return save_stille(msg)
	end
  elseif matches[1] == "delstille" then
    if not is_sudo(msg) then
      return "Du kannst diesen Befehl nicht benutzen!"
    else
      return delete_stille(msg)
	end
  elseif matches[1] == "liststille" then
    if not is_sudo(msg) then
      return "Du kannst diesen Befehl nicht benutzen!"
    else
    return list_stilles(msg)
	end
  end
end

return {
  description = "Es ist so still hier",
  usage = {
	"stille: Gibt zufälliges Zitat aus."
  },
  patterns = {
    "^#(delstille) (.+)$",
    "^#(addstille) (.+)$",
    "^*?[Ss][Tt][IiUu][Ll][Ll][Ee].?*?$",
	"^#(liststille)$"
  },
  run = run
}

end
--by Akamaru [https://ponywave.de]