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:
@@ -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))
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user