mirror of
https://github.com/allthingslinux/tux.git
synced 2024-10-02 16:43:12 +00:00
finish pollban
This commit is contained in:
parent
83b028b5b8
commit
afb937783d
4 changed files with 51 additions and 53 deletions
|
@ -250,3 +250,31 @@ class ModerationCogBase(commands.Cog):
|
|||
|
||||
await self.send_embed(ctx, embed, log_type="mod")
|
||||
await ctx.send(embed=embed, delete_after=30, ephemeral=True)
|
||||
|
||||
async def is_pollbanned(self, guild_id: int, user_id: int) -> bool:
|
||||
"""
|
||||
Check if a user is poll banned.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
guild_id : int
|
||||
The ID of the guild to check in.
|
||||
user_id : int
|
||||
The ID of the user to check.
|
||||
|
||||
Returns
|
||||
-------
|
||||
bool
|
||||
True if the user is poll banned, False otherwise.
|
||||
"""
|
||||
|
||||
# ban_cases = await self.case_controller.get_all_cases_by_type(guild_id, CaseType.POLLBAN)
|
||||
# unban_cases = await self.case_controller.get_all_cases_by_type(guild_id, CaseType.POLLUNBAN)
|
||||
|
||||
ban_cases = await self.db.case.get_all_cases_by_type(guild_id, CaseType.POLLBAN)
|
||||
unban_cases = await self.db.case.get_all_cases_by_type(guild_id, CaseType.POLLUNBAN)
|
||||
|
||||
ban_count = sum(case.case_user_id == user_id for case in ban_cases)
|
||||
unban_count = sum(case.case_user_id == user_id for case in unban_cases)
|
||||
|
||||
return ban_count > unban_count
|
||||
|
|
|
@ -66,31 +66,6 @@ class PollBan(ModerationCogBase):
|
|||
dm_sent = await self.send_dm(ctx, flags.silent, member, flags.reason, "poll banned")
|
||||
await self.handle_case_response(ctx, CaseType.POLLBAN, case.case_number, flags.reason, member, dm_sent)
|
||||
|
||||
async def is_pollbanned(self, guild_id: int, user_id: int) -> bool:
|
||||
"""
|
||||
Check if a user is poll banned.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
guild_id : int
|
||||
The ID of the guild to check in.
|
||||
user_id : int
|
||||
The ID of the user to check.
|
||||
|
||||
Returns
|
||||
-------
|
||||
bool
|
||||
True if the user is poll banned, False otherwise.
|
||||
"""
|
||||
|
||||
ban_cases = await self.case_controller.get_all_cases_by_type(guild_id, CaseType.POLLBAN)
|
||||
unban_cases = await self.case_controller.get_all_cases_by_type(guild_id, CaseType.POLLUNBAN)
|
||||
|
||||
ban_count = sum(case.case_user_id == user_id for case in ban_cases)
|
||||
unban_count = sum(case.case_user_id == user_id for case in unban_cases)
|
||||
|
||||
return ban_count > unban_count
|
||||
|
||||
|
||||
async def setup(bot: Tux) -> None:
|
||||
await bot.add_cog(PollBan(bot))
|
||||
|
|
|
@ -66,31 +66,6 @@ class PollUnban(ModerationCogBase):
|
|||
dm_sent = await self.send_dm(ctx, flags.silent, member, flags.reason, "poll unbanned")
|
||||
await self.handle_case_response(ctx, CaseType.POLLUNBAN, case.case_number, flags.reason, member, dm_sent)
|
||||
|
||||
async def is_pollbanned(self, guild_id: int, user_id: int) -> bool:
|
||||
"""
|
||||
Check if a user is poll banned.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
guild_id : int
|
||||
The ID of the guild to check in.
|
||||
user_id : int
|
||||
The ID of the user to check.
|
||||
|
||||
Returns
|
||||
-------
|
||||
bool
|
||||
True if the user is snippet banned, False otherwise.
|
||||
"""
|
||||
|
||||
ban_cases = await self.case_controller.get_all_cases_by_type(guild_id, CaseType.POLLBAN)
|
||||
unban_cases = await self.case_controller.get_all_cases_by_type(guild_id, CaseType.POLLUNBAN)
|
||||
|
||||
ban_count = sum(case.case_user_id == user_id for case in ban_cases)
|
||||
unban_count = sum(case.case_user_id == user_id for case in unban_cases)
|
||||
|
||||
return ban_count > unban_count
|
||||
|
||||
|
||||
async def setup(bot: Tux) -> None:
|
||||
await bot.add_cog(PollUnban(bot))
|
||||
|
|
|
@ -16,14 +16,33 @@ class Poll(commands.Cog):
|
|||
self.bot = bot
|
||||
self.case_controller = CaseController()
|
||||
|
||||
# TODO: for the moment this is duplicated code from ModerationCogBase in a attempt to get the code out sooner
|
||||
async def is_pollbanned(self, guild_id: int, user_id: int) -> bool:
|
||||
"""
|
||||
Check if a user is poll banned.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
guild_id : int
|
||||
The ID of the guild to check in.
|
||||
user_id : int
|
||||
The ID of the user to check.
|
||||
|
||||
Returns
|
||||
-------
|
||||
bool
|
||||
True if the user is poll banned, False otherwise.
|
||||
"""
|
||||
|
||||
ban_cases = await self.case_controller.get_all_cases_by_type(guild_id, CaseType.POLLBAN)
|
||||
unban_cases = await self.case_controller.get_all_cases_by_type(guild_id, CaseType.POLLUNBAN)
|
||||
|
||||
ban_count = sum(case.case_user_id == user_id for case in ban_cases)
|
||||
unban_count = sum(case.case_user_id == user_id for case in unban_cases)
|
||||
|
||||
return ban_count > unban_count
|
||||
return (
|
||||
ban_count > unban_count
|
||||
) # TODO: this implementation is flawed, if someone bans and unbans the same user multiple times, this will not work as expected
|
||||
|
||||
@commands.Cog.listener() # listen for messages
|
||||
async def on_message(self, message: discord.Message) -> None:
|
||||
|
@ -78,8 +97,9 @@ class Poll(commands.Cog):
|
|||
|
||||
|
||||
"""
|
||||
assert interaction.guild_id is int
|
||||
assert interaction.user.id is int
|
||||
if interaction.guild_id is None:
|
||||
await interaction.response.send_message("This command can only be used in a server.", ephemeral=True)
|
||||
return
|
||||
|
||||
# Split the options by comma
|
||||
options_list = options.split(",")
|
||||
|
|
Loading…
Reference in a new issue