diff --git a/.gitignore b/.gitignore index b108dbc7..a2870570 100644 --- a/.gitignore +++ b/.gitignore @@ -92,9 +92,6 @@ ENV/ .idea/ -# config file -royalbotconfig.py - # grandbot.py files diario.txt diff --git a/database.py b/database.py index 4101c534..65f1ee5d 100644 --- a/database.py +++ b/database.py @@ -72,17 +72,12 @@ def login(username, password, enable_exceptions=False): # Create a new session session = Session() # Find the matching user - users = session.query(User).filter_by(username=username).all() - # No user with a matching username found - if len(users) == 0: - if enable_exceptions: - raise NoUsersMatchingError("No users with the specified username found.") - else: - return session, None - db_user = users[0] + db_user = session.query(User).filter_by(username=username).first() + # Verify that the user exists + if db_user is not None: + return session, None # Test the password and return the session and the user if successful if bcrypt.hashpw(password.encode("utf8"), db_user.password) == db_user.password: - # TODO: Maybe there's a better way to do this? return session, db_user else: if enable_exceptions: @@ -94,6 +89,16 @@ def login(username, password, enable_exceptions=False): def init_royal_db(): create_user("test", "test", True) + +def find_user(username): + """Find the user with the specified username and return the session and the user object.""" + # Create a new session + session = Session() + # Find the matching user + db_user = session.query(User).filter_by(username=username).first() + # Return the session and the user + return session, db_user + session = Session() # Generate the database if it's empty if session.query(User).first() is None: diff --git a/grandbot.py b/grandbot.py index ca39f58a..03d254ce 100644 --- a/grandbot.py +++ b/grandbot.py @@ -31,7 +31,7 @@ def currently_logged_in(thing): return user -async def start_telegram(bot, update, arguments): +async def start_telegram(bot, update, _): # Set status to typing await update.message.chat.set_chat_action(bot, "typing") user = currently_logged_in(update) @@ -614,10 +614,8 @@ Sintassi: `/toggleroyal `""" if len(arguments) != 1: await update.message.reply(bot, "⚠ Sintassi del comando non valida.\n`/toggleroyal `", parse_mode="Markdown") return - # Create a new database session - session = database.Session() - # Find the user - user = session.query(database.User).filter_by(username=arguments[0]).first() + # Find the specified user + session, user = database.find_user(arguments[0]) # Check if the user exists if user is None: await update.message.reply(bot, "⚠ L'utente specificato non esiste.") diff --git a/royalbotconfig.py b/royalbotconfig.py new file mode 100644 index 00000000..6f150f45 --- /dev/null +++ b/royalbotconfig.py @@ -0,0 +1,19 @@ +import os + +class MissingTokenError(Exception): + pass + +if "telegram_token" in os.environ: + telegram_token = os.environ["telegram_token"] +else: + raise MissingTokenError("telegram_token") + +if "discord_token" in os.environ: + discord_token = os.environ["discord_token"] +else: + raise MissingTokenError("discord_token") + +if "discord_webhook" in os.environ: + discord_webhook = os.environ["discord_webhook"] +else: + raise MissingTokenError("discord_webhook") diff --git a/telegram.py b/telegram.py index d51b5085..b7569ed9 100644 --- a/telegram.py +++ b/telegram.py @@ -63,7 +63,7 @@ class Bot: self.updates.append(Update(update)) except NotImplementedError: pass - if len(data) > 0: + if len(self.updates) > 0: self.offset = self.updates[-1].update_id + 1 async def parse_update(self, update):