async def set_announcement_role( cls, session: AsyncSession, guild_id: t.Union[str, int, discord.Guild], role_id: t.Union[str, int, discord.Role], ) -> None: guild_id = get_datatype_int(guild_id) role_id = get_datatype_int(role_id) await on_conflict( session, cls, conflict_columns=["guild_id"], values={"guild_id": guild_id, "role_id": role_id}, ) await session.commit()
async def set_announcement_channel( cls, session: AsyncSession, guild_id: t.Union[str, int, discord.Guild], channel_id: t.Union[str, int, discord.TextChannel], ) -> None: guild_id = get_datatype_int(guild_id) channel_id = get_datatype_int(channel_id) await on_conflict( session, cls, conflict_columns=["guild_id"], values={"guild_id": guild_id, "channel_id": channel_id}, ) await session.commit()
async def set_role( cls, session: AsyncSession, guild_id: t.Union[str, int, discord.Guild], role: t.List[t.Union[str, int, discord.Role]], ) -> None: guild_id = get_datatype_int(guild_id) role = [get_datatype_int(r) for r in role] await on_conflict( session, cls, conflict_columns=["guild_id"], values={ "guild_id": guild_id, "auto_roles": role }, ) await session.commit()
async def remove_feed_channel( cls, session: AsyncSession, guild_id: t.Union[str, int, discord.Guild]) -> None: guild_id = get_datatype_int(guild_id) row = await session.run_sync(lambda session: session.query(cls). filter_by(guild_id=guild_id).first()) await session.run_sync(lambda session: session.delete(row)) await session.commit()
async def set_role( cls, session: AsyncSession, role_type: str, guild_id: t.Union[str, int, discord.Guild], role: t.Union[str, int, discord.Role, t.List[discord.Role]], ) -> None: guild_id = get_datatype_int(guild_id) role = get_datatype_int(role) await on_conflict( session, cls, conflict_columns=["guild_id"], values={ "guild_id": guild_id, role_type: role }, ) await session.commit()
async def get_roles( cls, session: AsyncSession, guild_id: t.Union[str, int, discord.Guild]) -> t.Optional[dict]: guild_id = get_datatype_int(guild_id) try: row = await session.run_sync(lambda session: session.query(cls). filter_by(guild_id=guild_id).first()) except NoResultFound: return None if row is not None: return row.dict()
async def set_prefix(cls, session: AsyncSession, context_id: t.Union[int, str], prefix: str) -> None: context_id = get_datatype_int(context_id) await on_conflict( session, cls, conflict_columns=["context_id"], values={ "context_id": context_id, "prefix": prefix }, ) await session.commit()
async def get_next_id( cls, session: AsyncSession, guild: t.Union[int, Guild] ) -> int: guild_id = get_datatype_int(guild) row = await session.run_sync( lambda session: session.query( cls).filter_by(guild_id=guild_id).first() ) row.next_id += 1 next_id = row.next_id await session.commit() return next_id
async def set_notification( cls, session: AsyncSession, guild_id: t.Union[str, int, discord.Guild], mode: bool, ): guild_id = get_datatype_int(guild_id) await on_conflict( session, cls, conflict_columns=["guild_id"], values={ "guild_id": guild_id, "notification": mode }, ) await session.commit()
async def set_words( cls, session: AsyncSession, guild_id: t.Union[str, int, discord.Guild], words: t.List[str], ) -> None: guild_id = get_datatype_int(guild_id) await on_conflict( session, cls, conflict_columns=["guild_id"], values={ "guild_id": guild_id, "words": words }, ) await session.commit()