2020-08-24 12:07:23 -04:00
|
|
|
import json
|
2020-08-24 17:02:08 -04:00
|
|
|
|
|
|
|
from sqlalchemy import Column, Integer, MetaData, String, Table, create_engine
|
2020-08-24 12:07:23 -04:00
|
|
|
|
|
|
|
|
|
|
|
class Database():
|
2020-08-24 17:02:08 -04:00
|
|
|
engine = create_engine('sqlite:///database.sqlite')
|
|
|
|
metadata = MetaData()
|
|
|
|
|
|
|
|
chats = Table(
|
|
|
|
"chats",
|
|
|
|
metadata,
|
|
|
|
Column("id", Integer, primary_key=True),
|
|
|
|
Column("disabled_commands", String, nullable=False)
|
|
|
|
)
|
|
|
|
|
|
|
|
metadata.create_all(engine)
|
|
|
|
conn = engine.connect()
|
|
|
|
|
|
|
|
def ensure_disabled_commands_table(self, chat_id: int):
|
2020-10-10 19:38:21 -04:00
|
|
|
self.conn.execute("INSERT OR IGNORE INTO chats (id, disabled_commands) VALUES (?, ?);", (chat_id, "[]"))
|
2020-08-24 12:07:23 -04:00
|
|
|
|
|
|
|
def get_disabled_commands(self, chat_id: int) -> list:
|
2020-08-24 17:02:08 -04:00
|
|
|
self.ensure_disabled_commands_table(chat_id)
|
2020-10-10 19:38:21 -04:00
|
|
|
disabled_raw = self.conn.execute("SELECT disabled_commands FROM chats WHERE id = ?;", (chat_id, )).fetchone()
|
2020-08-24 12:07:23 -04:00
|
|
|
return json.loads(disabled_raw[0] if disabled_raw else "[]")
|
|
|
|
|
|
|
|
def disable_command(self, chat_id: int, command: str):
|
|
|
|
disabled_commands = self.get_disabled_commands(chat_id)
|
|
|
|
|
|
|
|
if command not in disabled_commands:
|
|
|
|
disabled_commands.append(command)
|
|
|
|
new_disabled_commands = json.dumps(disabled_commands)
|
2020-08-24 17:02:08 -04:00
|
|
|
self.conn.execute("UPDATE chats SET disabled_commands = ? WHERE id = ?;", (new_disabled_commands, chat_id))
|
2020-08-24 12:07:23 -04:00
|
|
|
|
|
|
|
def enable_command(self, chat_id: int, command: str):
|
|
|
|
disabled_commands = self.get_disabled_commands(chat_id)
|
|
|
|
|
|
|
|
if command in disabled_commands:
|
|
|
|
disabled_commands.remove(command)
|
|
|
|
new_disabled_commands = json.dumps(disabled_commands)
|
2020-10-10 19:38:21 -04:00
|
|
|
self.conn.execute("UPDATE chats SET disabled_commands = ? WHERE id = ?;", (new_disabled_commands, chat_id))
|