From e3ece13c9b01244163c4c6397f2334557bc4c7ab Mon Sep 17 00:00:00 2001 From: Gabriella Date: Fri, 21 Nov 2025 14:43:22 -0700 Subject: [PATCH] working alpha ver. --- makefile | 2 +- src/bot_core.py | 42 ++++++++++++++++++++++++++++++++++------- src/helper/db_helper.py | 39 +++++++++++++++++++++++++++++++++++--- 3 files changed, 72 insertions(+), 11 deletions(-) diff --git a/makefile b/makefile index 49b6a89..23f4a4a 100644 --- a/makefile +++ b/makefile @@ -2,4 +2,4 @@ compose_up: docker compose up --build run: - python src/bot_core.py database.ini discord.token 477298331777761280 1441505246818996445 \ No newline at end of file + python src/bot_core.py database.ini discord.token 1128111628471255050 1441504341797371996 \ No newline at end of file diff --git a/src/bot_core.py b/src/bot_core.py index 63df61d..c42abb6 100644 --- a/src/bot_core.py +++ b/src/bot_core.py @@ -2,13 +2,15 @@ import argparse import discord +import datetime +import psycopg2 from discord.ext import commands import helper.db_helper CONTRASTELLAR = 181187505448681472 VERYBADSTAR_PL = 1439484001751404554 -DATABASE_CONN = helper.db_helper.DBHelper = None +DATABASE_CONN: helper.db_helper.DBHelper = None # instance variables larboard = 0 @@ -37,9 +39,11 @@ parser.add_argument('channel_id') @client.event async def on_ready(): - await client.tree.sync() print(f'{client.user} has connected.') print(f'we are using the guild {args.guild_id} and channel {args.channel_id}') + #guild: discord.Guild = await client.fetch_guild(args.guild_id) + #channel: discord.TextChannel = await client.fetch_channel(args.channel_id) + #await channel.send("test") @client.tree.command() @@ -52,15 +56,39 @@ async def ping(interaction: discord.Interaction): async def on_reaction_add(react: discord.Reaction, user: discord.User): message: discord.Message = react.message reaction: discord.Reaction = react.emoji + link: str = react.message.jump_url + react_uid: int = react.emoji.id message_uid: int = message.id - - - - if reaction != VERYBADSTAR_PL: - print(f'disregarding reaction!') + + if react_uid != VERYBADSTAR_PL: return + is_message_in_table: bool = DATABASE_CONN.is_message_in_table(message_uid) + + if react_uid == VERYBADSTAR_PL and not is_message_in_table: + print(f'adding to table /w one react') + DATABASE_CONN.add_message_to_table(message_uid=message_uid) + return + + elif react_uid == VERYBADSTAR_PL and is_message_in_table: + print(f'adding one react') + current_num_reacts: int = DATABASE_CONN.num_reacts(message_uid) + DATABASE_CONN.add_one_to_message(message_uid, current_num_reacts) + + current_num_reacts: int = DATABASE_CONN.num_reacts(message_uid) + if current_num_reacts == 3: + embed = discord.Embed(description=f"{react.message.content}\n[Jump to message]({link})", + timestamp=datetime.datetime.now()) + + embed.set_author(name=f"{react.message.author}") + + posting_channel: discord.TextChannel = await client.fetch_channel(args.channel_id) + + await posting_channel.send(embed=embed) + + + return # --- end commands diff --git a/src/helper/db_helper.py b/src/helper/db_helper.py index 6fce42a..200fc25 100644 --- a/src/helper/db_helper.py +++ b/src/helper/db_helper.py @@ -53,8 +53,41 @@ class DBHelper(): def __del__(self): pass - def num_reacts(self, message_uid: int): + def num_reacts(self, message_uid: int) -> int: self.__CONN = connect_config(self._config) cursor = self.__CONN.cursor() - cursor.execute('SELECT ') - return \ No newline at end of file + + cursor.execute(f'SELECT number_reacts from messages WHERE message_uid = {message_uid};') + + return_val: list = cursor.fetchone() + + return return_val[0] + + def is_message_in_table(self, message_uid: int) -> bool: + self.__CONN = connect_config(self._config) + cursor = self.__CONN.cursor() + + cursor.execute(f'SELECT * FROM messages WHERE message_uid = {message_uid};') + + list_of_return = cursor.fetchone() + + return list_of_return is not None + + def add_message_to_table(self, message_uid: int) -> bool: + self.__CONN = connect_config(self._config) + cursor = self.__CONN.cursor() + + cursor.execute(f"INSERT INTO messages (message_uid, number_reacts) VALUES ('{message_uid}', 1);") + self.__CONN.commit() + + return True + + def add_one_to_message(self, message_uid: int, current_count: int) -> bool: + self.__CONN = connect_config(self._config) + cursor = self.__CONN.cursor() + + cursor.execute(f"UPDATE messages SET number_reacts = {current_count + 1} WHERE message_uid = {message_uid}") + self.__CONN.commit() + + return True +