forked from angerstoner/schneiderbot-tg
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
34 lines
1.3 KiB
34 lines
1.3 KiB
"""DB interface"""
|
|
import sqlite3
|
|
|
|
class Db():
|
|
""" Abstract interface for db actions """
|
|
def __init__(self):
|
|
self.conn = sqlite3.connect("deaths.db")
|
|
table_exist = self.conn.execute("SELECT name FROM sqlite_master WHERE type='table' AND name='death'")
|
|
if table_exist.fetchall() == []:
|
|
self.conn.execute("CREATE TABLE death(name text, chat integer )")
|
|
self.conn.execute("create index chat_idx on death(chat)")
|
|
|
|
def __del__(self):
|
|
self.conn.commit()
|
|
|
|
def is_dead(self, user, chat):
|
|
"""Reports whether a user is already dead"""
|
|
res = self.conn.execute("select * from death where chat = ? and name = ?", [chat, user])
|
|
return res.fetchall() != []
|
|
|
|
def kill(self, user, chat):
|
|
"""Kills a user"""
|
|
self.conn.execute("insert into death(name, chat) values(?, ?)", [user, chat])
|
|
|
|
def revive(self, user, chat):
|
|
"""Revives a user"""
|
|
self.conn.execute("delete from death where chat = ? and name = ?", [chat, user])
|
|
|
|
def get_dead_bodies(self, chat):
|
|
"""List the dead"""
|
|
names = []
|
|
for name in self.conn.execute("select * from death where chat = ?", [chat]).fetchall():
|
|
names.append(name[0])
|
|
return ", ".join(names)
|