From e596927846ebc8507690dd545c95cee11f94fa9b Mon Sep 17 00:00:00 2001 From: Georgios Atheridis Date: Wed, 11 May 2022 00:21:09 +0000 Subject: [PATCH] added teams --- skgyorugo/commands/newteams.py | 26 ++++-- skgyorugo/commands/queue.py | 2 +- skgyorugo/commands/teams.py | 83 +++++++++++++++++++ .../commands/{queuesize.py => teamsize.py} | 0 skgyorugo/database_manager.py | 1 + 5 files changed, 103 insertions(+), 9 deletions(-) create mode 100644 skgyorugo/commands/teams.py rename skgyorugo/commands/{queuesize.py => teamsize.py} (100%) diff --git a/skgyorugo/commands/newteams.py b/skgyorugo/commands/newteams.py index 4134006..6d5b0ff 100644 --- a/skgyorugo/commands/newteams.py +++ b/skgyorugo/commands/newteams.py @@ -36,7 +36,7 @@ def main(bot: Bot, message: Message): """ ) fetched = c.fetchall() - queue = [x[0] for x in fetched] + queue: list[str] = [x[0] for x in fetched] twitch = ttv_api.users.get_users(user_ids=queue) if not twitch: bot.send_privmsg( @@ -46,11 +46,11 @@ def main(bot: Bot, message: Message): ) conn.close() return - queue_names = [] + queue_users: list[ttv_api.users.User] = [] for twitch_id in queue: for twitch_user in twitch: if int(twitch_user.user_id) == int(twitch_id): - queue_names.append(twitch_user.display_name) + queue_users.append(twitch_user) break else: bot.send_privmsg( @@ -74,14 +74,24 @@ def main(bot: Bot, message: Message): reply=message.tags["id"], ) - queue = queue_names[:queue_size] - random.shuffle(queue) - blue_team = queue[: queue_size // 2] - red_team = queue[queue_size // 2 :] + queue_users: list[ttv_api.users.User] = queue_users[:queue_size] + random.shuffle(queue_users) + blue_team: list[ttv_api.users.User] = queue_users[: queue_size // 2] + red_team: list[ttv_api.users.User] = queue_users[queue_size // 2 :] + + c.execute("UPDATE lol_queue SET team = NULL") + sql = f"UPDATE lol_queue SET team = 0 WHERE twitch_id IN ({(', ?' * (queue_size // 2))[2:]})" + c.execute(sql, tuple(user.user_id for user in blue_team)) + sql = f"UPDATE lol_queue SET team = 1 WHERE twitch_id IN ({(', ?' * (queue_size - queue_size // 2))[2:]})" + c.execute(sql, tuple(user.user_id for user in red_team)) + conn.commit() + + blue_team_users: list[str] = [user.display_name for user in blue_team] + red_team_users: list[str] = [user.display_name for user in red_team] bot.send_privmsg( message.channel, - [f"Blue team is: {blue_team}", f"Red team is: {red_team}"], + [f"Blue team is: {blue_team_users}", f"Red team is: {red_team_users}"], reply=message.tags["id"], ) diff --git a/skgyorugo/commands/queue.py b/skgyorugo/commands/queue.py index e313af9..1f5d2c5 100644 --- a/skgyorugo/commands/queue.py +++ b/skgyorugo/commands/queue.py @@ -77,7 +77,7 @@ def main(bot: Bot, message: Message): tools.smart_privmsg.send( bot, message, - f"These people are to play with {message.channel}: {queue_names[1:queue_size]} | and these people are waiting: {queue_names[queue_size:]}", + f"These people are playing with {message.channel}: {queue_names[1:queue_size]} | and these people are waiting: {queue_names[queue_size:]}", reply=message.tags["id"], ) diff --git a/skgyorugo/commands/teams.py b/skgyorugo/commands/teams.py new file mode 100644 index 0000000..1e6f01b --- /dev/null +++ b/skgyorugo/commands/teams.py @@ -0,0 +1,83 @@ +from aptbot.bot import Message, Commands, Bot +import os +import logging +import ttv_api.users +import sqlite3 +import tools.smart_privmsg + +logger = logging.getLogger(__name__) +logger.setLevel(logging.DEBUG) + +formatter = logging.Formatter("[%(levelname)s] %(asctime)s: %(name)s; %(message)s") + +file_handler = logging.FileHandler("/var/log/aptbot/logs.log") +file_handler.setFormatter(formatter) + +logger.handlers = [] +logger.addHandler(file_handler) + +PERMISSION = 99 +PREFIX = "?" +DESCRIPTION = r"Check current teams" +USER_COOLDOWN = 30 +GLOBAL_COOLDOWN = 15 + +PATH = os.path.dirname(os.path.realpath(__file__)) +PATH = os.path.join(PATH, "..") + + +def main(bot: Bot, message: Message): + conn = sqlite3.connect(os.path.join(PATH, "lol_data.db")) + c = conn.cursor() + + c.execute( + """ + SELECT twitch_id, team FROM lol_queue WHERE team in (0, 1); + """ + ) + fetched = c.fetchall() + blue_team = [] + red_team = [] + for user in fetched: + if user[1] == 0: + blue_team.append(user[0]) + elif user[1] == 1: + red_team.append(user[0]) + else: + bot.send_privmsg( + message.channel, + f"Something VERY WEIRD occured. The user with id: {user[0]} is on team {user[1]}, which is neither blue = 0 or red = 1.", + reply=message.tags["id"], + ) + + users = [x[0] for x in fetched] + twitch = ttv_api.users.get_users(user_ids=users) + if not twitch: + bot.send_privmsg( + message.channel, + "There was an issue fetching twitch data. Sadge", + reply=message.tags["id"], + ) + conn.close() + return + blue_team_users = [] + red_team_users = [] + for twitch_user in twitch: + if twitch_user.user_id in blue_team: + blue_team_users.append(twitch_user.display_name) + elif twitch_user.user_id in red_team: + red_team_users.append(twitch_user.display_name) + else: + bot.send_privmsg( + message.channel, + f"Something VERY WEIRD occured. The user with id: {twitch_user.user_id} who has the name {twitch_user.display_name} is not on a team.", + reply=message.tags["id"], + ) + + bot.send_privmsg( + message.channel, + [f"Blue team is: {blue_team_users}", f"Red team is: {red_team_users}"], + reply=message.tags["id"], + ) + + conn.close() diff --git a/skgyorugo/commands/queuesize.py b/skgyorugo/commands/teamsize.py similarity index 100% rename from skgyorugo/commands/queuesize.py rename to skgyorugo/commands/teamsize.py diff --git a/skgyorugo/database_manager.py b/skgyorugo/database_manager.py index 9f6a95c..718c274 100644 --- a/skgyorugo/database_manager.py +++ b/skgyorugo/database_manager.py @@ -98,6 +98,7 @@ def create_lol_database(): available INTEGER NOT NULL, last_available INTEGER, time_remaining INTEGER NOT NULL, + team INTEGER, PRIMARY KEY (twitch_id) ); """ -- 2.30.2