Fixed temporary bans, and added an option to exclude discord from banning.

changed the color of "Time is UP!" in the roll results, as requested.
This commit is contained in:
2022-08-09 17:09:52 +02:00
parent d4d08b3054
commit 28f0e66394
7 changed files with 84 additions and 26 deletions
@@ -16,12 +16,14 @@ from core.db import DB
from core.decorators import instance, command, event, timerevent
from core.dict_object import DictObject
from core.logger import Logger
from core.setting_types import BooleanSettingType
from modules.core.ban.ban_service import BanService
if TYPE_CHECKING:
from modules.core.discord.discord_controller import DiscordController
from core.message_hub_service import MessageHubService
from core.command_service import CommandService
from core.setting_service import SettingService
@instance()
@@ -37,9 +39,12 @@ class DiscordCommandHandler(BaseModule):
self.db: DB = registry.get_instance("db")
self.relay_hub_service: MessageHubService = registry.get_instance("message_hub_service")
self.command_service: CommandService = registry.get_instance("command_service")
self.setting_service: SettingService = registry.get_instance("setting_service")
def pre_start(self):
self.command_service.register_command_channel("Discord", self.DISCORD_CHANNEL)
self.setting_service.register(self.module_name, "include_discord_ban", True, BooleanSettingType(),
"Should chatbot bans be extended to discord (Ban from the discord server!):")
@event("discord_command", "should the bot take care of discord commands", False)
def discord_command_handler(self, _, event_data):
@@ -251,6 +256,8 @@ class DiscordCommandHandler(BaseModule):
token = self.discord.setting_discord_token().get_value()
if token.lower() in ["none", "", "null"]:
return
if not self.setting_service.get("include_discord_ban").get_value():
return
account = self.discord.account_service.get_account(event_data.char_id)
if account.discord_joined == 1 and account.discord_id != "":
member = self.discord.guild.get_member(int(account.discord_id))
+6 -2
View File
@@ -210,7 +210,7 @@ class DiscordController:
await invite.delete()
async def discord_banlist(self):
return await self.guild.bans()
return [entry async for entry in self.guild.bans(limit=2000)]
async def discord_ban_user(self, user, reason=""):
await self.guild.ban(user, reason=reason)
@@ -239,6 +239,10 @@ class DiscordController:
addroles.append(failed)
remroles = discord_user.roles
else:
# if bans are not transferred to discord, just freeze the member role.
ignore = (not self.setting_service.get("include_discord_ban").get_value()) and account.disabled
if ignore:
self.logger.warning(f"Frozen Account: {account.name}")
# Superadmin
if access_level["level"] in [10, 20]:
if self.get_role(self.discord_roles.admin, discord_user.roles) is None:
@@ -255,7 +259,7 @@ class DiscordController:
rank = self.get_role(self.discord_roles.member, self.guild.roles) or None
if rank is not None:
addroles.append(rank)
else:
elif not ignore:
rank = self.get_role(self.discord_roles.member, self.guild.roles) or None
if rank is not None:
remroles.append(rank)