diff options
| author | salmonik <salmonik@noreply.codeberg.org> | 2026-04-19 18:10:09 +0200 |
|---|---|---|
| committer | salmonik <salmonik@noreply.codeberg.org> | 2026-04-19 18:10:09 +0200 |
| commit | f8e1cf36e1efa0602bf2e450835f2a67654762a6 (patch) | |
| tree | fe6b12226d7eebe2a0dc6525de3414d0c3718cc8 /cogs/trigger.py | |
| parent | add support for x^2+y^2=0,4 and alike (diff) | |
| parent | fix: proper aiohttp async context manager mocking in test (diff) | |
| download | senator-sperma-f8e1cf36e1efa0602bf2e450835f2a67654762a6.tar.gz senator-sperma-f8e1cf36e1efa0602bf2e450835f2a67654762a6.zip | |
Merge pull request 'massive changes' (#3) from dev into main
Reviewed-on: https://codeberg.org/salmonik/senator-sperma/pulls/3
stable enough
Diffstat (limited to 'cogs/trigger.py')
| -rw-r--r-- | cogs/trigger.py | 44 |
1 files changed, 25 insertions, 19 deletions
diff --git a/cogs/trigger.py b/cogs/trigger.py index 0e76cef..02e5573 100644 --- a/cogs/trigger.py +++ b/cogs/trigger.py | |||
| @@ -15,6 +15,12 @@ logger = logging.getLogger(__name__) | |||
| 15 | 15 | ||
| 16 | DB_PATH = 'data/triggers.db' | 16 | DB_PATH = 'data/triggers.db' |
| 17 | 17 | ||
| 18 | _SELECT_KEYWORD_SQL = "SELECT keyword FROM trigger_keywords WHERE trigger_id=?" | ||
| 19 | _SELECT_RESPONSE_SQL = "SELECT response_text FROM trigger_responses WHERE trigger_id=?" | ||
| 20 | _SELECT_TRIGGER_ID_SQL = "SELECT id FROM triggers WHERE name=?" | ||
| 21 | _TRIGGER_NOT_FOUND_MSG = "Trigger not found." | ||
| 22 | _TRIGGER_NAME_OPTION = "the name of the trigger" | ||
| 23 | |||
| 18 | 24 | ||
| 19 | def get_connection(): | 25 | def get_connection(): |
| 20 | return sqlite3.connect(DB_PATH) | 26 | return sqlite3.connect(DB_PATH) |
| @@ -112,10 +118,10 @@ class Trigger(commands.Cog): | |||
| 112 | c = conn.cursor() | 118 | c = conn.cursor() |
| 113 | c.execute("SELECT id, name FROM triggers") | 119 | c.execute("SELECT id, name FROM triggers") |
| 114 | for trigger_id, name in c.fetchall(): | 120 | for trigger_id, name in c.fetchall(): |
| 115 | c.execute("SELECT keyword FROM trigger_keywords WHERE trigger_id=?", (trigger_id,)) | 121 | c.execute(_SELECT_KEYWORD_SQL, (trigger_id,)) |
| 116 | keywords = [row[0] for row in c.fetchall()] | 122 | keywords = [row[0] for row in c.fetchall()] |
| 117 | if any(keyword in content for keyword in keywords): | 123 | if any(keyword in content for keyword in keywords): |
| 118 | c.execute("SELECT response_text FROM trigger_responses WHERE trigger_id=?", (trigger_id,)) | 124 | c.execute(_SELECT_RESPONSE_SQL, (trigger_id,)) |
| 119 | responses = [row[0] for row in c.fetchall()] | 125 | responses = [row[0] for row in c.fetchall()] |
| 120 | if responses: | 126 | if responses: |
| 121 | await message.channel.send(random.choice(responses).replace('\\n', '\n')) | 127 | await message.channel.send(random.choice(responses).replace('\\n', '\n')) |
| @@ -137,7 +143,7 @@ class Trigger(commands.Cog): | |||
| 137 | ctx: discord.ApplicationContext, | 143 | ctx: discord.ApplicationContext, |
| 138 | name = discord.Option( | 144 | name = discord.Option( |
| 139 | str, | 145 | str, |
| 140 | "the name of the trigger", | 146 | _TRIGGER_NAME_OPTION, |
| 141 | autocomplete= discord.utils.basic_autocomplete(get_type), | 147 | autocomplete= discord.utils.basic_autocomplete(get_type), |
| 142 | required=True | 148 | required=True |
| 143 | ) | 149 | ) |
| @@ -157,7 +163,7 @@ class Trigger(commands.Cog): | |||
| 157 | ctx: discord.ApplicationContext, | 163 | ctx: discord.ApplicationContext, |
| 158 | name = discord.Option( | 164 | name = discord.Option( |
| 159 | str, | 165 | str, |
| 160 | "the name of the trigger", | 166 | _TRIGGER_NAME_OPTION, |
| 161 | autocomplete= discord.utils.basic_autocomplete(get_type), | 167 | autocomplete= discord.utils.basic_autocomplete(get_type), |
| 162 | required=True | 168 | required=True |
| 163 | ), | 169 | ), |
| @@ -174,10 +180,10 @@ class Trigger(commands.Cog): | |||
| 174 | ): | 180 | ): |
| 175 | with get_connection() as conn: | 181 | with get_connection() as conn: |
| 176 | c = conn.cursor() | 182 | c = conn.cursor() |
| 177 | c.execute("SELECT id FROM triggers WHERE name=?", (name,)) | 183 | c.execute(_SELECT_TRIGGER_ID_SQL, (name,)) |
| 178 | row = c.fetchone() | 184 | row = c.fetchone() |
| 179 | if not row: | 185 | if not row: |
| 180 | await ctx.respond("Trigger not found.") | 186 | await ctx.respond(_TRIGGER_NOT_FOUND_MSG) |
| 181 | logger.warning(f"Trigger not found: {name}") | 187 | logger.warning(f"Trigger not found: {name}") |
| 182 | return | 188 | return |
| 183 | trigger_id = row[0] | 189 | trigger_id = row[0] |
| @@ -204,7 +210,7 @@ class Trigger(commands.Cog): | |||
| 204 | ctx: discord.ApplicationContext, | 210 | ctx: discord.ApplicationContext, |
| 205 | name = discord.Option( | 211 | name = discord.Option( |
| 206 | str, | 212 | str, |
| 207 | "the name of the trigger", | 213 | _TRIGGER_NAME_OPTION, |
| 208 | autocomplete= discord.utils.basic_autocomplete(get_type), | 214 | autocomplete= discord.utils.basic_autocomplete(get_type), |
| 209 | required=True | 215 | required=True |
| 210 | ), | 216 | ), |
| @@ -221,10 +227,10 @@ class Trigger(commands.Cog): | |||
| 221 | ): | 227 | ): |
| 222 | with get_connection() as conn: | 228 | with get_connection() as conn: |
| 223 | c = conn.cursor() | 229 | c = conn.cursor() |
| 224 | c.execute("SELECT id FROM triggers WHERE name=?", (name,)) | 230 | c.execute(_SELECT_TRIGGER_ID_SQL, (name,)) |
| 225 | row = c.fetchone() | 231 | row = c.fetchone() |
| 226 | if not row: | 232 | if not row: |
| 227 | await ctx.respond("Trigger not found.") | 233 | await ctx.respond(_TRIGGER_NOT_FOUND_MSG) |
| 228 | logger.warning(f"Trigger not found: {name}") | 234 | logger.warning(f"Trigger not found: {name}") |
| 229 | return | 235 | return |
| 230 | trigger_id = row[0] | 236 | trigger_id = row[0] |
| @@ -245,17 +251,17 @@ class Trigger(commands.Cog): | |||
| 245 | ctx: discord.ApplicationContext, | 251 | ctx: discord.ApplicationContext, |
| 246 | name = discord.Option( | 252 | name = discord.Option( |
| 247 | str, | 253 | str, |
| 248 | "the name of the trigger", | 254 | _TRIGGER_NAME_OPTION, |
| 249 | autocomplete= discord.utils.basic_autocomplete(get_type), | 255 | autocomplete= discord.utils.basic_autocomplete(get_type), |
| 250 | required=True | 256 | required=True |
| 251 | ) | 257 | ) |
| 252 | ): | 258 | ): |
| 253 | with get_connection() as conn: | 259 | with get_connection() as conn: |
| 254 | c = conn.cursor() | 260 | c = conn.cursor() |
| 255 | c.execute("SELECT id FROM triggers WHERE name=?", (name,)) | 261 | c.execute(_SELECT_TRIGGER_ID_SQL, (name,)) |
| 256 | row = c.fetchone() | 262 | row = c.fetchone() |
| 257 | if not row: | 263 | if not row: |
| 258 | await ctx.respond("Trigger not found.") | 264 | await ctx.respond(_TRIGGER_NOT_FOUND_MSG) |
| 259 | return | 265 | return |
| 260 | trigger_id = row[0] | 266 | trigger_id = row[0] |
| 261 | c.execute("DELETE FROM trigger_keywords WHERE trigger_id=?", (trigger_id,)) | 267 | c.execute("DELETE FROM trigger_keywords WHERE trigger_id=?", (trigger_id,)) |
| @@ -275,7 +281,7 @@ class Trigger(commands.Cog): | |||
| 275 | ctx: discord.ApplicationContext, | 281 | ctx: discord.ApplicationContext, |
| 276 | name = discord.Option( | 282 | name = discord.Option( |
| 277 | str, | 283 | str, |
| 278 | "the name of the trigger", | 284 | _TRIGGER_NAME_OPTION, |
| 279 | autocomplete=discord.utils.basic_autocomplete(get_type), | 285 | autocomplete=discord.utils.basic_autocomplete(get_type), |
| 280 | required=True | 286 | required=True |
| 281 | ) | 287 | ) |
| @@ -286,13 +292,13 @@ class Trigger(commands.Cog): | |||
| 286 | c.execute("SELECT id FROM triggers WHERE name=?", (name,)) | 292 | c.execute("SELECT id FROM triggers WHERE name=?", (name,)) |
| 287 | row = c.fetchone() | 293 | row = c.fetchone() |
| 288 | if not row: | 294 | if not row: |
| 289 | await ctx.respond("Trigger not found.") | 295 | await ctx.respond(_TRIGGER_NOT_FOUND_MSG) |
| 290 | logger.warning(f"Trigger not found: {name}") | 296 | logger.warning(f"Trigger not found: {name}") |
| 291 | return | 297 | return |
| 292 | trigger_id = row[0] | 298 | trigger_id = row[0] |
| 293 | c.execute("SELECT keyword FROM trigger_keywords WHERE trigger_id=?", (trigger_id,)) | 299 | c.execute(_SELECT_KEYWORD_SQL, (trigger_id,)) |
| 294 | triggers = [row[0] for row in c.fetchall()] | 300 | triggers = [row[0] for row in c.fetchall()] |
| 295 | c.execute("SELECT response_text FROM trigger_responses WHERE trigger_id=?", (trigger_id,)) | 301 | c.execute(_SELECT_RESPONSE_SQL, (trigger_id,)) |
| 296 | responses = [row[0] for row in c.fetchall()] | 302 | responses = [row[0] for row in c.fetchall()] |
| 297 | trigger_list = "\n".join(triggers) | 303 | trigger_list = "\n".join(triggers) |
| 298 | response_list = "\n".join(responses) | 304 | response_list = "\n".join(responses) |
| @@ -303,13 +309,13 @@ class Trigger(commands.Cog): | |||
| 303 | c.execute("SELECT id, name FROM triggers") | 309 | c.execute("SELECT id, name FROM triggers") |
| 304 | messages = [] | 310 | messages = [] |
| 305 | for trigger_id, name in c.fetchall(): | 311 | for trigger_id, name in c.fetchall(): |
| 306 | c.execute("SELECT keyword FROM trigger_keywords WHERE trigger_id=?", (trigger_id,)) | 312 | c.execute(_SELECT_KEYWORD_SQL, (trigger_id,)) |
| 307 | triggers = ", ".join([row[0] for row in c.fetchall()]) | 313 | triggers = ", ".join([row[0] for row in c.fetchall()]) |
| 308 | c.execute("SELECT response_text FROM trigger_responses WHERE trigger_id=?", (trigger_id,)) | 314 | c.execute(_SELECT_RESPONSE_SQL, (trigger_id,)) |
| 309 | responses = ", ".join([row[0] for row in c.fetchall()]) | 315 | responses = ", ".join([row[0] for row in c.fetchall()]) |
| 310 | messages.append(f"**{name}**\nTriggers: {triggers}\nResponses: {responses}") | 316 | messages.append(f"**{name}**\nTriggers: {triggers}\nResponses: {responses}") |
| 311 | await ctx.respond("\n\n".join(messages)) | 317 | await ctx.respond("\n\n".join(messages)) |
| 312 | logger.info(f"Triggers listed") | 318 | logger.info("Triggers listed") |
| 313 | 319 | ||
| 314 | @trigger_group.command( | 320 | @trigger_group.command( |
| 315 | description="how to use trigger group?" | 321 | description="how to use trigger group?" |
