This commit is contained in:
AF 2023-08-25 15:25:16 +00:00
parent 0794a9392d
commit 4bf043d140
3 changed files with 12 additions and 12 deletions

View File

@ -49,8 +49,10 @@ def main():
try:
loop.run_until_complete(task)
except (KeyboardInterrupt, InterruptedError, RuntimeError):
close(bot, loop)
loop.run_until_complete(task)
try:
close(bot, loop)
finally:
loop.run_until_complete(task)
if __name__ == "__main__":

View File

@ -6,8 +6,6 @@ from typing import Any
import aiosqlite
from starbot.db import AbstractDbManager
from .db import AbstractConnection, AbstractDbFactory, AbstractDbManager
@ -42,7 +40,7 @@ class Adapter(AbstractConnection):
async def manager(path: Path):
async with aiosqlite.connect(path) as connection:
db: dict[Hashable, Any] = {}
await connection.execute("CREATE TABLE IF NOT EXISTS kv(key, value)")
await connection.execute("CREATE TABLE IF NOT EXISTS kv(key PRIMARY KEY, value)")
for key, value in await connection.execute_fetchall("SELECT key, value FROM kv"):
db[_load_key(json.loads(key))] = json.loads(value)
yield Adapter(connection, db)

View File

@ -8,10 +8,9 @@ from typing import AsyncContextManager, Callable, Generic, Hashable, Type, TypeV
import discord
from discord.ext import commands
from starbot.instrumentation import Instrumentation
from .bot import Reservations, StarBot, StarState
from .db import AbstractConnection
from .instrumentation import Instrumentation
T = TypeVar("T")
@ -91,7 +90,7 @@ class MessageState:
return inner()
async def __aexit__(self, et, ev, tb, /):
async def __aexit__(self, et, _ev, _tb, /):
return et and issubclass(et, EventuallyConsistent)
@ -199,10 +198,11 @@ class ReactionCtx:
async def on(self) -> None:
if self.name != "":
return
assignment: dict[str, int] | None = self.connection.get(("assign", self.guild_id), None)
if assignment is None:
return
star_channel_id, count = assignment["channel"], assignment["count"]
match self.connection.get(("assign", self.guild_id), None):
case {"channel": int() as star_channel_id, "count": int() as count}:
pass
case _:
return
if self.channel_id == star_channel_id:
return
await StarEventCtx(self, star_channel_id, count).on()