Updated docs
This commit is contained in:
@@ -1,26 +1,26 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
"""
|
||||
cpl-discord sh-edraft Common Python library Discord
|
||||
cpl-discord CPL Discord
|
||||
~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
sh-edraft Common Python library link between discord.py and CPL
|
||||
Link between discord.py and CPL
|
||||
|
||||
:copyright: (c) 2022 - 2023 sh-edraft.de
|
||||
:license: MIT, see LICENSE for more details.
|
||||
|
||||
"""
|
||||
|
||||
__title__ = 'cpl_discord'
|
||||
__author__ = 'Sven Heidemann'
|
||||
__license__ = 'MIT'
|
||||
__copyright__ = 'Copyright (c) 2022 - 2023 sh-edraft.de'
|
||||
__version__ = '2022.12.1'
|
||||
__title__ = "cpl_discord"
|
||||
__author__ = "Sven Heidemann"
|
||||
__license__ = "MIT"
|
||||
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
||||
__version__ = "2023.2.0"
|
||||
|
||||
from collections import namedtuple
|
||||
|
||||
|
||||
# imports:
|
||||
|
||||
VersionInfo = namedtuple('VersionInfo', 'major minor micro')
|
||||
version_info = VersionInfo(major='2022', minor='12', micro='1')
|
||||
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
||||
version_info = VersionInfo(major="2023", minor="2", micro="0")
|
||||
|
@@ -6,17 +6,16 @@ from cpl_core.utils import String
|
||||
|
||||
|
||||
class DiscordBot(ProjectTypeABC):
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
base_path: str,
|
||||
project_name: str,
|
||||
workspace: WorkspaceSettings,
|
||||
use_application_api: bool,
|
||||
use_startup: bool,
|
||||
use_service_providing: bool,
|
||||
use_async: bool,
|
||||
project_file_data: dict,
|
||||
self,
|
||||
base_path: str,
|
||||
project_name: str,
|
||||
workspace: WorkspaceSettings,
|
||||
use_application_api: bool,
|
||||
use_startup: bool,
|
||||
use_service_providing: bool,
|
||||
use_async: bool,
|
||||
project_file_data: dict,
|
||||
):
|
||||
from project_file_discord import DiscordBotProjectFile
|
||||
from project_file_discord_appsettings import DiscordBotProjectFileAppsettings
|
||||
@@ -31,24 +30,56 @@ class DiscordBot(ProjectTypeABC):
|
||||
|
||||
use_application_api, use_startup, use_service_providing, use_async = True, True, True, True
|
||||
|
||||
ProjectTypeABC.__init__(self, base_path, project_name, workspace, use_application_api, use_startup, use_service_providing, use_async, project_file_data)
|
||||
ProjectTypeABC.__init__(
|
||||
self,
|
||||
base_path,
|
||||
project_name,
|
||||
workspace,
|
||||
use_application_api,
|
||||
use_startup,
|
||||
use_service_providing,
|
||||
use_async,
|
||||
project_file_data,
|
||||
)
|
||||
|
||||
project_path = f'{base_path}{String.convert_to_snake_case(project_name.split("/")[-1])}/'
|
||||
|
||||
self.add_template(DiscordBotProjectFile(project_name.split('/')[-1], project_path, project_file_data))
|
||||
self.add_template(DiscordBotProjectFile(project_name.split("/")[-1], project_path, project_file_data))
|
||||
if workspace is None:
|
||||
self.add_template(DiscordBotProjectFileLicense(''))
|
||||
self.add_template(DiscordBotProjectFileReadme(''))
|
||||
self.add_template(DiscordBotInit('', 'init', f'{base_path}tests/'))
|
||||
self.add_template(DiscordBotProjectFileLicense(""))
|
||||
self.add_template(DiscordBotProjectFileReadme(""))
|
||||
self.add_template(DiscordBotInit("", "init", f"{base_path}tests/"))
|
||||
|
||||
self.add_template(DiscordBotInit('', 'init', project_path))
|
||||
self.add_template(DiscordBotInit("", "init", project_path))
|
||||
self.add_template(DiscordBotProjectFileAppsettings(project_path))
|
||||
|
||||
self.add_template(DiscordBotInit('', 'init', f'{project_path}events/'))
|
||||
self.add_template(Event('OnReady', 'event', f'{project_path}events/'))
|
||||
self.add_template(DiscordBotInit('', 'init', f'{project_path}commands/'))
|
||||
self.add_template(Command('Ping', 'command', f'{project_path}commands/'))
|
||||
self.add_template(DiscordBotInit("", "init", f"{project_path}events/"))
|
||||
self.add_template(Event("OnReady", "event", f"{project_path}events/"))
|
||||
self.add_template(DiscordBotInit("", "init", f"{project_path}commands/"))
|
||||
self.add_template(Command("Ping", "command", f"{project_path}commands/"))
|
||||
|
||||
self.add_template(DiscordBotProjectFileApplication(project_path, use_application_api, use_startup, use_service_providing, use_async))
|
||||
self.add_template(DiscordBotProjectFileStartup(project_name.split('/')[-1], project_path, use_application_api, use_startup, use_service_providing, use_async))
|
||||
self.add_template(DiscordBotProjectFileMain(project_name.split('/')[-1], project_path, use_application_api, use_startup, use_service_providing, use_async))
|
||||
self.add_template(
|
||||
DiscordBotProjectFileApplication(
|
||||
project_path, use_application_api, use_startup, use_service_providing, use_async
|
||||
)
|
||||
)
|
||||
self.add_template(
|
||||
DiscordBotProjectFileStartup(
|
||||
project_name.split("/")[-1],
|
||||
project_path,
|
||||
use_application_api,
|
||||
use_startup,
|
||||
use_service_providing,
|
||||
use_async,
|
||||
)
|
||||
)
|
||||
self.add_template(
|
||||
DiscordBotProjectFileMain(
|
||||
project_name.split("/")[-1],
|
||||
project_path,
|
||||
use_application_api,
|
||||
use_startup,
|
||||
use_service_providing,
|
||||
use_async,
|
||||
)
|
||||
)
|
||||
|
@@ -4,10 +4,9 @@ from cpl_cli.abc.file_template_abc import FileTemplateABC
|
||||
|
||||
|
||||
class DiscordBotProjectFile(FileTemplateABC):
|
||||
|
||||
def __init__(self, name: str, path: str, code: dict):
|
||||
FileTemplateABC.__init__(self, '', path, '{}')
|
||||
self._name = f'{name}.json'
|
||||
FileTemplateABC.__init__(self, "", path, "{}")
|
||||
self._name = f"{name}.json"
|
||||
self._code = code
|
||||
|
||||
def get_code(self) -> str:
|
||||
|
@@ -4,13 +4,13 @@ from cpl_cli.abc.file_template_abc import FileTemplateABC
|
||||
|
||||
|
||||
class DiscordBotProjectFileAppsettings(FileTemplateABC):
|
||||
|
||||
def __init__(self, path: str):
|
||||
FileTemplateABC.__init__(self, '', path, '{}')
|
||||
self._name = 'appsettings.json'
|
||||
FileTemplateABC.__init__(self, "", path, "{}")
|
||||
self._name = "appsettings.json"
|
||||
|
||||
def get_code(self) -> str:
|
||||
return textwrap.dedent("""\
|
||||
return textwrap.dedent(
|
||||
"""\
|
||||
{
|
||||
"TimeFormatSettings": {
|
||||
"DateFormat": "%Y-%m-%d",
|
||||
@@ -31,4 +31,5 @@ class DiscordBotProjectFileAppsettings(FileTemplateABC):
|
||||
"Prefix": "!bot "
|
||||
}
|
||||
}
|
||||
""")
|
||||
"""
|
||||
)
|
||||
|
@@ -2,14 +2,18 @@ from cpl_cli.abc.code_file_template_abc import CodeFileTemplateABC
|
||||
|
||||
|
||||
class DiscordBotProjectFileApplication(CodeFileTemplateABC):
|
||||
|
||||
def __init__(self, path: str, use_application_api: bool, use_startup: bool, use_service_providing: bool, use_async: bool):
|
||||
CodeFileTemplateABC.__init__(self, 'application', path, '', use_application_api, use_startup, use_service_providing, use_async)
|
||||
def __init__(
|
||||
self, path: str, use_application_api: bool, use_startup: bool, use_service_providing: bool, use_async: bool
|
||||
):
|
||||
CodeFileTemplateABC.__init__(
|
||||
self, "application", path, "", use_application_api, use_startup, use_service_providing, use_async
|
||||
)
|
||||
|
||||
def get_code(self) -> str:
|
||||
import textwrap
|
||||
|
||||
return textwrap.dedent("""\
|
||||
return textwrap.dedent(
|
||||
"""\
|
||||
from cpl_core.application import ApplicationABC
|
||||
from cpl_core.configuration import ConfigurationABC
|
||||
from cpl_core.console import Console
|
||||
@@ -50,4 +54,5 @@ class DiscordBotProjectFileApplication(CodeFileTemplateABC):
|
||||
self._logger.error(__name__, 'stop failed', e)
|
||||
|
||||
Console.write_line()
|
||||
""")
|
||||
"""
|
||||
)
|
||||
|
@@ -3,15 +3,25 @@ from cpl_core.utils import String
|
||||
|
||||
|
||||
class DiscordBotProjectFileMain(CodeFileTemplateABC):
|
||||
|
||||
def __init__(self, name: str, path: str, use_application_api: bool, use_startup: bool, use_service_providing: bool, use_async: bool):
|
||||
CodeFileTemplateABC.__init__(self, 'main', path, '', use_application_api, use_startup, use_service_providing, use_async)
|
||||
def __init__(
|
||||
self,
|
||||
name: str,
|
||||
path: str,
|
||||
use_application_api: bool,
|
||||
use_startup: bool,
|
||||
use_service_providing: bool,
|
||||
use_async: bool,
|
||||
):
|
||||
CodeFileTemplateABC.__init__(
|
||||
self, "main", path, "", use_application_api, use_startup, use_service_providing, use_async
|
||||
)
|
||||
|
||||
import textwrap
|
||||
|
||||
import_pkg = f'{String.convert_to_snake_case(name)}.'
|
||||
import_pkg = f"{String.convert_to_snake_case(name)}."
|
||||
|
||||
self._main_with_application_host_and_startup = textwrap.dedent(f"""\
|
||||
self._main_with_application_host_and_startup = textwrap.dedent(
|
||||
f"""\
|
||||
import asyncio
|
||||
from typing import Optional
|
||||
|
||||
@@ -41,7 +51,8 @@ class DiscordBotProjectFileMain(CodeFileTemplateABC):
|
||||
asyncio.run(program.main())
|
||||
except KeyboardInterrupt:
|
||||
asyncio.run(program.stop())
|
||||
""")
|
||||
"""
|
||||
)
|
||||
|
||||
def get_code(self) -> str:
|
||||
return self._main_with_application_host_and_startup
|
||||
|
@@ -3,17 +3,27 @@ from cpl_core.utils import String
|
||||
|
||||
|
||||
class DiscordBotProjectFileStartup(CodeFileTemplateABC):
|
||||
|
||||
def __init__(self, project_name: str, path: str, use_application_api: bool, use_startup: bool, use_service_providing: bool, use_async: bool):
|
||||
CodeFileTemplateABC.__init__(self, 'startup', path, '', use_application_api, use_startup, use_service_providing, use_async)
|
||||
def __init__(
|
||||
self,
|
||||
project_name: str,
|
||||
path: str,
|
||||
use_application_api: bool,
|
||||
use_startup: bool,
|
||||
use_service_providing: bool,
|
||||
use_async: bool,
|
||||
):
|
||||
CodeFileTemplateABC.__init__(
|
||||
self, "startup", path, "", use_application_api, use_startup, use_service_providing, use_async
|
||||
)
|
||||
self._project_name = project_name
|
||||
|
||||
def get_code(self) -> str:
|
||||
import textwrap
|
||||
|
||||
import_pkg = f'{String.convert_to_snake_case(self._project_name)}.'
|
||||
import_pkg = f"{String.convert_to_snake_case(self._project_name)}."
|
||||
|
||||
return textwrap.dedent(f"""\
|
||||
return textwrap.dedent(
|
||||
f"""\
|
||||
from cpl_core.application import StartupABC
|
||||
from cpl_core.configuration import ConfigurationABC
|
||||
from cpl_core.dependency_injection import ServiceProviderABC, ServiceCollectionABC
|
||||
@@ -44,4 +54,5 @@ class DiscordBotProjectFileStartup(CodeFileTemplateABC):
|
||||
dc_collection.add_command(PingCommand)
|
||||
|
||||
return services.build_service_provider()
|
||||
""")
|
||||
"""
|
||||
)
|
||||
|
@@ -2,10 +2,9 @@ from cpl_cli.abc.file_template_abc import FileTemplateABC
|
||||
|
||||
|
||||
class DiscordBotProjectFileLicense(FileTemplateABC):
|
||||
|
||||
def __init__(self, path: str):
|
||||
FileTemplateABC.__init__(self, '', path, '')
|
||||
self._name = 'LICENSE'
|
||||
FileTemplateABC.__init__(self, "", path, "")
|
||||
self._name = "LICENSE"
|
||||
|
||||
def get_code(self) -> str:
|
||||
return self._code
|
||||
|
@@ -2,10 +2,9 @@ from cpl_cli.abc.file_template_abc import FileTemplateABC
|
||||
|
||||
|
||||
class DiscordBotProjectFileReadme(FileTemplateABC):
|
||||
|
||||
def __init__(self, path: str):
|
||||
FileTemplateABC.__init__(self, '', path, '')
|
||||
self._name = 'README.md'
|
||||
FileTemplateABC.__init__(self, "", path, "")
|
||||
self._name = "README.md"
|
||||
|
||||
def get_code(self) -> str:
|
||||
return self._code
|
||||
|
@@ -4,7 +4,6 @@ from cpl_cli.abc.generate_schematic_abc import GenerateSchematicABC
|
||||
|
||||
|
||||
class Command(GenerateSchematicABC):
|
||||
|
||||
def __init__(self, *args: str):
|
||||
GenerateSchematicABC.__init__(self, *args)
|
||||
|
||||
@@ -37,8 +36,4 @@ class Command(GenerateSchematicABC):
|
||||
|
||||
@classmethod
|
||||
def register(cls):
|
||||
GenerateSchematicABC.register(
|
||||
cls,
|
||||
'command',
|
||||
[]
|
||||
)
|
||||
GenerateSchematicABC.register(cls, "command", [])
|
||||
|
@@ -7,15 +7,15 @@ from cpl_core.utils import String
|
||||
|
||||
|
||||
class Event(GenerateSchematicABC):
|
||||
|
||||
def __init__(self, name: str, schematic: str, path: str):
|
||||
GenerateSchematicABC.__init__(self, name, schematic, path)
|
||||
|
||||
event = None
|
||||
|
||||
from cpl_discord.discord_event_types_enum import DiscordEventTypesEnum
|
||||
|
||||
for event_type in DiscordEventTypesEnum:
|
||||
event_name = event_type.value.__name__.replace("ABC", '')
|
||||
event_name = event_type.value.__name__.replace("ABC", "")
|
||||
|
||||
if event_name in name:
|
||||
name = name.replace(event_name, "")
|
||||
@@ -23,18 +23,18 @@ class Event(GenerateSchematicABC):
|
||||
break
|
||||
|
||||
if event is None:
|
||||
Console.error(f'No valid event found in name {name}')
|
||||
Console.write_line('Available events:')
|
||||
Console.error(f"No valid event found in name {name}")
|
||||
Console.write_line("Available events:")
|
||||
for event_type in DiscordEventTypesEnum:
|
||||
Console.write_line(f'\t{event_type.value.__name__.replace("ABC", "")}')
|
||||
sys.exit()
|
||||
|
||||
self._event_class = f'{event}ABC'
|
||||
self._event_class = f"{event}ABC"
|
||||
self._name = f'{String.convert_to_snake_case(self._event_class.replace("ABC", ""))}_{schematic}.py'
|
||||
self._class_name = f'{self._event_class.replace("ABC", "")}{String.first_to_upper(schematic)}'
|
||||
if name != '':
|
||||
self._name = f'{String.convert_to_snake_case(name)}_{self._name}'
|
||||
self._class_name = f'{String.first_to_upper(name)}{self._class_name}'
|
||||
if name != "":
|
||||
self._name = f"{String.convert_to_snake_case(name)}_{self._name}"
|
||||
self._class_name = f"{String.first_to_upper(name)}{self._class_name}"
|
||||
|
||||
def get_code(self) -> str:
|
||||
code = """\
|
||||
@@ -62,8 +62,4 @@ class Event(GenerateSchematicABC):
|
||||
|
||||
@classmethod
|
||||
def register(cls):
|
||||
GenerateSchematicABC.register(
|
||||
cls,
|
||||
'event',
|
||||
[]
|
||||
)
|
||||
GenerateSchematicABC.register(cls, "event", [])
|
||||
|
@@ -4,10 +4,9 @@ from cpl_cli.abc.generate_schematic_abc import GenerateSchematicABC
|
||||
|
||||
|
||||
class DiscordBotInit(GenerateSchematicABC):
|
||||
|
||||
def __init__(self, *args: str):
|
||||
GenerateSchematicABC.__init__(self, *args)
|
||||
self._name = f'__init__.py'
|
||||
self._name = f"__init__.py"
|
||||
|
||||
def get_code(self) -> str:
|
||||
code = """\
|
||||
@@ -17,8 +16,4 @@ class DiscordBotInit(GenerateSchematicABC):
|
||||
|
||||
@classmethod
|
||||
def register(cls):
|
||||
GenerateSchematicABC.register(
|
||||
cls,
|
||||
'init',
|
||||
[]
|
||||
)
|
||||
GenerateSchematicABC.register(cls, "init", [])
|
||||
|
@@ -1,21 +1,21 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
"""
|
||||
cpl-discord sh-edraft Common Python library Discord
|
||||
cpl-discord CPL Discord
|
||||
~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
sh-edraft Common Python library link between discord.py and CPL
|
||||
Link between discord.py and CPL
|
||||
|
||||
:copyright: (c) 2022 - 2023 sh-edraft.de
|
||||
:license: MIT, see LICENSE for more details.
|
||||
|
||||
"""
|
||||
|
||||
__title__ = 'cpl_discord'
|
||||
__author__ = 'Sven Heidemann'
|
||||
__license__ = 'MIT'
|
||||
__copyright__ = 'Copyright (c) 2022 - 2023 sh-edraft.de'
|
||||
__version__ = '2022.12.1'
|
||||
__title__ = "cpl_discord"
|
||||
__author__ = "Sven Heidemann"
|
||||
__license__ = "MIT"
|
||||
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
||||
__version__ = "2023.2.0"
|
||||
|
||||
from collections import namedtuple
|
||||
|
||||
@@ -35,24 +35,28 @@ def add_discord(self):
|
||||
self.add_singleton(DiscordServiceABC, DiscordService)
|
||||
self.add_singleton(DiscordBotServiceABC, DiscordBotService)
|
||||
except ImportError as e:
|
||||
Console.error('cpl-discord is not installed', str(e))
|
||||
Console.error("cpl-discord is not installed", str(e))
|
||||
|
||||
|
||||
def init():
|
||||
from cpl_core.dependency_injection import ServiceCollection
|
||||
|
||||
ServiceCollection.add_discord = add_discord
|
||||
|
||||
|
||||
init()
|
||||
|
||||
|
||||
def get_discord_collection(services: 'ServiceCollectionABC') -> 'DiscordCollectionABC':
|
||||
def get_discord_collection(services: "ServiceCollectionABC") -> "DiscordCollectionABC":
|
||||
from cpl_discord.service.discord_collection import DiscordCollection
|
||||
from cpl_discord.service.discord_collection_abc import DiscordCollectionABC
|
||||
|
||||
collection = DiscordCollection(services)
|
||||
services.add_singleton(DiscordCollectionABC, collection)
|
||||
return collection
|
||||
|
||||
|
||||
# build-ignore-end
|
||||
|
||||
VersionInfo = namedtuple('VersionInfo', 'major minor micro')
|
||||
version_info = VersionInfo(major='2022', minor='12', micro='1')
|
||||
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
||||
version_info = VersionInfo(major="2023", minor="2", micro="0")
|
||||
|
@@ -1,21 +1,21 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
"""
|
||||
cpl-discord sh-edraft Common Python library Discord
|
||||
cpl-discord CPL Discord
|
||||
~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
sh-edraft Common Python library link between discord.py and CPL
|
||||
Link between discord.py and CPL
|
||||
|
||||
:copyright: (c) 2022 - 2023 sh-edraft.de
|
||||
:license: MIT, see LICENSE for more details.
|
||||
|
||||
"""
|
||||
|
||||
__title__ = 'cpl_discord.application'
|
||||
__author__ = 'Sven Heidemann'
|
||||
__license__ = 'MIT'
|
||||
__copyright__ = 'Copyright (c) 2022 - 2023 sh-edraft.de'
|
||||
__version__ = '2022.12.1'
|
||||
__title__ = "cpl_discord.application"
|
||||
__author__ = "Sven Heidemann"
|
||||
__license__ = "MIT"
|
||||
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
||||
__version__ = "2023.2.0"
|
||||
|
||||
from collections import namedtuple
|
||||
|
||||
@@ -23,5 +23,5 @@ from collections import namedtuple
|
||||
# imports
|
||||
from .discord_bot_application_abc import DiscordBotApplicationABC
|
||||
|
||||
VersionInfo = namedtuple('VersionInfo', 'major minor micro')
|
||||
version_info = VersionInfo(major='2022', minor='12', micro='1')
|
||||
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
||||
version_info = VersionInfo(major="2023", minor="2", micro="0")
|
||||
|
@@ -6,9 +6,9 @@ from cpl_core.dependency_injection.service_provider_abc import ServiceProviderAB
|
||||
|
||||
|
||||
class DiscordBotApplicationABC(ApplicationABC):
|
||||
|
||||
def __init__(self, config: ConfigurationABC, services: ServiceProviderABC):
|
||||
ApplicationABC.__init__(self, config, services)
|
||||
|
||||
@abstractmethod
|
||||
def stop_async(self): pass
|
||||
def stop_async(self):
|
||||
pass
|
||||
|
@@ -1,21 +1,21 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
"""
|
||||
cpl-discord sh-edraft Common Python library Discord
|
||||
cpl-discord CPL Discord
|
||||
~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
sh-edraft Common Python library link between discord.py and CPL
|
||||
Link between discord.py and CPL
|
||||
|
||||
:copyright: (c) 2022 - 2023 sh-edraft.de
|
||||
:license: MIT, see LICENSE for more details.
|
||||
|
||||
"""
|
||||
|
||||
__title__ = 'cpl_discord.command'
|
||||
__author__ = 'Sven Heidemann'
|
||||
__license__ = 'MIT'
|
||||
__copyright__ = 'Copyright (c) 2022 - 2023 sh-edraft.de'
|
||||
__version__ = '2022.12.1'
|
||||
__title__ = "cpl_discord.command"
|
||||
__author__ = "Sven Heidemann"
|
||||
__license__ = "MIT"
|
||||
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
||||
__version__ = "2023.2.0"
|
||||
|
||||
from collections import namedtuple
|
||||
|
||||
@@ -24,5 +24,5 @@ from collections import namedtuple
|
||||
from .discord_command_abc import DiscordCommandABC
|
||||
from .discord_commands_meta import DiscordCogMeta
|
||||
|
||||
VersionInfo = namedtuple('VersionInfo', 'major minor micro')
|
||||
version_info = VersionInfo(major='2022', minor='12', micro='1')
|
||||
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
||||
version_info = VersionInfo(major="2023", minor="2", micro="0")
|
||||
|
@@ -6,6 +6,6 @@ from cpl_discord.command.discord_commands_meta import DiscordCogMeta
|
||||
|
||||
|
||||
class DiscordCommandABC(ABC, commands.Cog, metaclass=DiscordCogMeta):
|
||||
|
||||
@abstractmethod
|
||||
def __init__(self): pass
|
||||
def __init__(self):
|
||||
pass
|
||||
|
@@ -2,4 +2,5 @@ from abc import ABCMeta
|
||||
from discord.ext import commands
|
||||
|
||||
|
||||
class DiscordCogMeta(ABCMeta, commands.CogMeta): pass
|
||||
class DiscordCogMeta(ABCMeta, commands.CogMeta):
|
||||
pass
|
||||
|
@@ -1,21 +1,21 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
"""
|
||||
cpl-discord sh-edraft Common Python library Discord
|
||||
cpl-discord CPL Discord
|
||||
~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
sh-edraft Common Python library link between discord.py and CPL
|
||||
Link between discord.py and CPL
|
||||
|
||||
:copyright: (c) 2022 - 2023 sh-edraft.de
|
||||
:license: MIT, see LICENSE for more details.
|
||||
|
||||
"""
|
||||
|
||||
__title__ = 'cpl_discord.configuration'
|
||||
__author__ = 'Sven Heidemann'
|
||||
__license__ = 'MIT'
|
||||
__copyright__ = 'Copyright (c) 2022 - 2023 sh-edraft.de'
|
||||
__version__ = '2022.12.1'
|
||||
__title__ = "cpl_discord.configuration"
|
||||
__author__ = "Sven Heidemann"
|
||||
__license__ = "MIT"
|
||||
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
||||
__version__ = "2023.2.0"
|
||||
|
||||
from collections import namedtuple
|
||||
|
||||
@@ -23,5 +23,5 @@ from collections import namedtuple
|
||||
# imports
|
||||
from .discord_bot_settings import DiscordBotSettings
|
||||
|
||||
VersionInfo = namedtuple('VersionInfo', 'major minor micro')
|
||||
version_info = VersionInfo(major='2022', minor='12', micro='1')
|
||||
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
||||
version_info = VersionInfo(major="2023", minor="2", micro="0")
|
||||
|
@@ -5,12 +5,11 @@ from cpl_core.console import Console
|
||||
|
||||
|
||||
class DiscordBotSettings(ConfigurationModelABC):
|
||||
|
||||
def __init__(self):
|
||||
ConfigurationModelABC.__init__(self)
|
||||
|
||||
self._token = ''
|
||||
self._prefix = ''
|
||||
self._token = ""
|
||||
self._prefix = ""
|
||||
|
||||
@property
|
||||
def token(self) -> str:
|
||||
@@ -22,8 +21,8 @@ class DiscordBotSettings(ConfigurationModelABC):
|
||||
|
||||
def from_dict(self, settings: dict):
|
||||
try:
|
||||
self._token = settings['Token']
|
||||
self._prefix = settings['Prefix']
|
||||
self._token = settings["Token"]
|
||||
self._prefix = settings["Prefix"]
|
||||
except Exception as e:
|
||||
Console.error(f'[ ERROR ] [ {__name__} ]: Reading error in {__name__} settings')
|
||||
Console.error(f'[ EXCEPTION ] [ {__name__} ]: {e} -> {traceback.format_exc()}')
|
||||
Console.error(f"[ ERROR ] [ {__name__} ]: Reading error in {__name__} settings")
|
||||
Console.error(f"[ EXCEPTION ] [ {__name__} ]: {e} -> {traceback.format_exc()}")
|
||||
|
@@ -1,21 +1,21 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
"""
|
||||
cpl-discord sh-edraft Common Python library Discord
|
||||
cpl-discord CPL Discord
|
||||
~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
sh-edraft Common Python library link between discord.py and CPL
|
||||
Link between discord.py and CPL
|
||||
|
||||
:copyright: (c) 2022 - 2023 sh-edraft.de
|
||||
:license: MIT, see LICENSE for more details.
|
||||
|
||||
"""
|
||||
|
||||
__title__ = 'cpl_discord.container'
|
||||
__author__ = 'Sven Heidemann'
|
||||
__license__ = 'MIT'
|
||||
__copyright__ = 'Copyright (c) 2022 - 2023 sh-edraft.de'
|
||||
__version__ = '2022.12.1'
|
||||
__title__ = "cpl_discord.container"
|
||||
__author__ = "Sven Heidemann"
|
||||
__license__ = "MIT"
|
||||
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
||||
__version__ = "2023.2.0"
|
||||
|
||||
from collections import namedtuple
|
||||
|
||||
@@ -30,5 +30,5 @@ from .text_channel import TextChannel
|
||||
from .thread import Thread
|
||||
from .voice_channel import VoiceChannel
|
||||
|
||||
VersionInfo = namedtuple('VersionInfo', 'major minor micro')
|
||||
version_info = VersionInfo(major='2022', minor='12', micro='1')
|
||||
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
||||
version_info = VersionInfo(major="2023", minor="2", micro="0")
|
||||
|
@@ -8,7 +8,6 @@ from cpl_query.extension import List
|
||||
|
||||
|
||||
class CategoryChannel(discord.CategoryChannel, Container):
|
||||
|
||||
def __init__(self, _t: discord.CategoryChannel):
|
||||
Container.__init__(self, _t, CategoryChannel)
|
||||
|
||||
|
@@ -3,7 +3,6 @@ from typing import Callable
|
||||
|
||||
|
||||
class Container:
|
||||
|
||||
def __init__(self, _o: object, _t: type):
|
||||
self._object = _o
|
||||
self._type = _t
|
||||
|
@@ -11,7 +11,6 @@ from cpl_query.extension import List
|
||||
|
||||
|
||||
class Guild(Container, discord.Guild):
|
||||
|
||||
def __init__(self, _t: discord.Guild):
|
||||
self._object: discord.Guild = _t
|
||||
|
||||
|
@@ -6,11 +6,11 @@ from cpl_query.extension.list import List
|
||||
|
||||
|
||||
class Member(discord.Member, Container):
|
||||
|
||||
def __init__(self, _t: discord.Member):
|
||||
Container.__init__(self, _t, Member)
|
||||
|
||||
@property
|
||||
def roles(self) -> List['Role']:
|
||||
def roles(self) -> List["Role"]:
|
||||
from cpl_discord.container.role import Role
|
||||
|
||||
return List(Role, ToContainersConverter.convert(self._object.roles, Role))
|
||||
|
@@ -7,11 +7,11 @@ from cpl_query.extension.list import List
|
||||
|
||||
|
||||
class Role(discord.Role, Container):
|
||||
|
||||
def __init__(self, _t: discord.Role):
|
||||
Container.__init__(self, _t, Role)
|
||||
|
||||
@property
|
||||
def members(self) -> List['Member']:
|
||||
def members(self) -> List["Member"]:
|
||||
from cpl_discord.container.member import Member
|
||||
|
||||
return List(Member, ToContainersConverter.convert(self._object.members, Member))
|
||||
|
@@ -8,7 +8,6 @@ from cpl_query.extension import List
|
||||
|
||||
|
||||
class TextChannel(discord.TextChannel, Container):
|
||||
|
||||
def __init__(self, _t: discord.TextChannel):
|
||||
Container.__init__(self, _t, TextChannel)
|
||||
|
||||
|
@@ -7,7 +7,6 @@ from cpl_query.extension import List
|
||||
|
||||
|
||||
class Thread(discord.Thread, Container):
|
||||
|
||||
def __init__(self, _t: discord.Thread):
|
||||
Container.__init__(self, _t, Thread)
|
||||
|
||||
|
@@ -7,7 +7,6 @@ from cpl_query.extension import List
|
||||
|
||||
|
||||
class VoiceChannel(discord.VoiceChannel, Container):
|
||||
|
||||
def __init__(self, _t: discord.VoiceChannel):
|
||||
Container.__init__(self, _t, VoiceChannel)
|
||||
|
||||
|
@@ -2,26 +2,26 @@
|
||||
"ProjectSettings": {
|
||||
"Name": "cpl-discord",
|
||||
"Version": {
|
||||
"Major": "2022",
|
||||
"Minor": "12",
|
||||
"Micro": "1"
|
||||
"Major": "2023",
|
||||
"Minor": "2",
|
||||
"Micro": "0"
|
||||
},
|
||||
"Author": "Sven Heidemann",
|
||||
"AuthorEmail": "sven.heidemann@sh-edraft.de",
|
||||
"Description": "sh-edraft Common Python library Discord",
|
||||
"LongDescription": "sh-edraft Common Python library link between discord.py and CPL",
|
||||
"Description": "CPL Discord",
|
||||
"LongDescription": "Link between discord.py and CPL",
|
||||
"URL": "https://www.sh-edraft.de",
|
||||
"CopyrightDate": "2022 - 2023",
|
||||
"CopyrightName": "sh-edraft.de",
|
||||
"LicenseName": "MIT",
|
||||
"LicenseDescription": "MIT, see LICENSE for more details.",
|
||||
"Dependencies": [
|
||||
"cpl-core>=2022.12.1",
|
||||
"cpl-core>=2023.2.0",
|
||||
"discord.py==2.1.0",
|
||||
"cpl-query>=2022.12.2.post1"
|
||||
"cpl-query>=2023.2.0"
|
||||
],
|
||||
"DevDependencies": [
|
||||
"cpl-cli>=2022.12.1"
|
||||
"cpl-cli>=2023.2.0"
|
||||
],
|
||||
"PythonVersion": ">=3.10",
|
||||
"PythonPath": {},
|
||||
|
@@ -1,21 +1,21 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
"""
|
||||
cpl-discord sh-edraft Common Python library Discord
|
||||
cpl-discord CPL Discord
|
||||
~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
sh-edraft Common Python library link between discord.py and CPL
|
||||
Link between discord.py and CPL
|
||||
|
||||
:copyright: (c) 2022 - 2023 sh-edraft.de
|
||||
:license: MIT, see LICENSE for more details.
|
||||
|
||||
"""
|
||||
|
||||
__title__ = 'cpl_discord.events'
|
||||
__author__ = 'Sven Heidemann'
|
||||
__license__ = 'MIT'
|
||||
__copyright__ = 'Copyright (c) 2022 - 2023 sh-edraft.de'
|
||||
__version__ = '2022.12.1'
|
||||
__title__ = "cpl_discord.events"
|
||||
__author__ = "Sven Heidemann"
|
||||
__license__ = "MIT"
|
||||
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
||||
__version__ = "2023.2.0"
|
||||
|
||||
from collections import namedtuple
|
||||
|
||||
@@ -68,5 +68,5 @@ from .on_user_update_abc import OnUserUpdateABC
|
||||
from .on_voice_state_update_abc import OnVoiceStateUpdateABC
|
||||
from .on_webhooks_update_abc import OnWebhooksUpdateABC
|
||||
|
||||
VersionInfo = namedtuple('VersionInfo', 'major minor micro')
|
||||
version_info = VersionInfo(major='2022', minor='12', micro='1')
|
||||
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
||||
version_info = VersionInfo(major="2023", minor="2", micro="0")
|
||||
|
@@ -3,9 +3,10 @@ import discord
|
||||
|
||||
|
||||
class OnBulkMessageDeleteABC(ABC):
|
||||
@abstractmethod
|
||||
def __init__(self):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
def __init__(self): pass
|
||||
|
||||
@abstractmethod
|
||||
async def on_bulk_message_delete(self, messages: list[discord.Message]): pass
|
||||
async def on_bulk_message_delete(self, messages: list[discord.Message]):
|
||||
pass
|
||||
|
@@ -4,9 +4,10 @@ from discord.ext.commands import Context
|
||||
|
||||
|
||||
class OnCommandABC(ABC):
|
||||
@abstractmethod
|
||||
def __init__(self):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
def __init__(self): pass
|
||||
|
||||
@abstractmethod
|
||||
async def on_command(self, ctx: Context): pass
|
||||
async def on_command(self, ctx: Context):
|
||||
pass
|
||||
|
@@ -4,9 +4,10 @@ from discord.ext.commands import Context, CommandError
|
||||
|
||||
|
||||
class OnCommandCompletionABC(ABC):
|
||||
@abstractmethod
|
||||
def __init__(self):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
def __init__(self): pass
|
||||
|
||||
@abstractmethod
|
||||
async def on_command_completion(self, ctx: Context): pass
|
||||
async def on_command_completion(self, ctx: Context):
|
||||
pass
|
||||
|
@@ -4,9 +4,10 @@ from discord.ext.commands import Context, CommandError
|
||||
|
||||
|
||||
class OnCommandErrorABC(ABC):
|
||||
@abstractmethod
|
||||
def __init__(self):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
def __init__(self): pass
|
||||
|
||||
@abstractmethod
|
||||
async def on_command_error(self, ctx: Context, error: CommandError): pass
|
||||
async def on_command_error(self, ctx: Context, error: CommandError):
|
||||
pass
|
||||
|
@@ -2,9 +2,10 @@ from abc import ABC, abstractmethod
|
||||
|
||||
|
||||
class OnConnectABC(ABC):
|
||||
@abstractmethod
|
||||
def __init__(self):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
def __init__(self): pass
|
||||
|
||||
@abstractmethod
|
||||
async def on_connect(self): pass
|
||||
async def on_connect(self):
|
||||
pass
|
||||
|
@@ -2,9 +2,10 @@ from abc import ABC, abstractmethod
|
||||
|
||||
|
||||
class OnDisconnectABC(ABC):
|
||||
@abstractmethod
|
||||
def __init__(self):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
def __init__(self): pass
|
||||
|
||||
@abstractmethod
|
||||
async def on_disconnect(self): pass
|
||||
async def on_disconnect(self):
|
||||
pass
|
||||
|
@@ -2,9 +2,10 @@ from abc import ABC, abstractmethod
|
||||
|
||||
|
||||
class OnErrorABC(ABC):
|
||||
@abstractmethod
|
||||
def __init__(self):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
def __init__(self): pass
|
||||
|
||||
@abstractmethod
|
||||
async def on_error(self, event: str, *args, **kwargs): pass
|
||||
async def on_error(self, event: str, *args, **kwargs):
|
||||
pass
|
||||
|
@@ -3,10 +3,10 @@ import discord
|
||||
|
||||
|
||||
class OnGroupJoinABC(ABC):
|
||||
@abstractmethod
|
||||
def __init__(self):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
def __init__(self): pass
|
||||
|
||||
@abstractmethod
|
||||
async def on_group_join(
|
||||
self, channel: discord.GroupChannel, user: discord.User): pass
|
||||
async def on_group_join(self, channel: discord.GroupChannel, user: discord.User):
|
||||
pass
|
||||
|
@@ -1,11 +1,12 @@
|
||||
from abc import ABC, abstractmethod
|
||||
import discord
|
||||
|
||||
|
||||
class OnGroupRemoveABC(ABC):
|
||||
@abstractmethod
|
||||
def __init__(self):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
def __init__(self): pass
|
||||
|
||||
@abstractmethod
|
||||
async def on_group_remove(
|
||||
self, chhanel: discord.GroupChannel, user: discord.User): pass
|
||||
async def on_group_remove(self, chhanel: discord.GroupChannel, user: discord.User):
|
||||
pass
|
||||
|
@@ -3,9 +3,10 @@ import discord
|
||||
|
||||
|
||||
class OnGuildAvailableABC(ABC):
|
||||
@abstractmethod
|
||||
def __init__(self):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
def __init__(self): pass
|
||||
|
||||
@abstractmethod
|
||||
async def on_guild_available(self, guild: discord.Guild): pass
|
||||
async def on_guild_available(self, guild: discord.Guild):
|
||||
pass
|
||||
|
@@ -3,10 +3,10 @@ import discord
|
||||
|
||||
|
||||
class OnGuildChannelCreateABC(ABC):
|
||||
@abstractmethod
|
||||
def __init__(self):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
def __init__(self): pass
|
||||
|
||||
@abstractmethod
|
||||
async def on_guild_channel_create(self, channel: discord.abc.GuildChannel): pass
|
||||
|
||||
async def on_guild_channel_create(self, channel: discord.abc.GuildChannel):
|
||||
pass
|
||||
|
@@ -3,10 +3,10 @@ import discord
|
||||
|
||||
|
||||
class OnGuildChannelDeleteABC(ABC):
|
||||
@abstractmethod
|
||||
def __init__(self):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
def __init__(self): pass
|
||||
|
||||
@abstractmethod
|
||||
async def on_guild_channel_delete(self, channel: discord.abc.GuildChannel): pass
|
||||
|
||||
async def on_guild_channel_delete(self, channel: discord.abc.GuildChannel):
|
||||
pass
|
||||
|
@@ -5,10 +5,10 @@ import discord
|
||||
|
||||
|
||||
class OnGuildChannelPinsUpdateABC(ABC):
|
||||
@abstractmethod
|
||||
def __init__(self):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
def __init__(self): pass
|
||||
|
||||
@abstractmethod
|
||||
async def on_guild_channel_pins_update(self, channel: discord.abc.GuildChannel, list_pin: Optional[datetime]): pass
|
||||
|
||||
async def on_guild_channel_pins_update(self, channel: discord.abc.GuildChannel, list_pin: Optional[datetime]):
|
||||
pass
|
||||
|
@@ -3,9 +3,10 @@ import discord
|
||||
|
||||
|
||||
class OnGuildChannelUpdateABC(ABC):
|
||||
@abstractmethod
|
||||
def __init__(self):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
def __init__(self): pass
|
||||
|
||||
@abstractmethod
|
||||
async def on_guild_channel_update(self, before: discord.abc.GuildChannel, after: discord.abc.GuildChannel): pass
|
||||
async def on_guild_channel_update(self, before: discord.abc.GuildChannel, after: discord.abc.GuildChannel):
|
||||
pass
|
||||
|
@@ -4,9 +4,12 @@ import discord
|
||||
|
||||
|
||||
class OnGuildEmojisUpdateABC(ABC):
|
||||
@abstractmethod
|
||||
def __init__(self):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
def __init__(self): pass
|
||||
|
||||
@abstractmethod
|
||||
async def on_guild_emojis_update(self, guild: discord.Guild, before: Sequence[discord.Emoji], after: Sequence[discord.Emoji]): pass
|
||||
async def on_guild_emojis_update(
|
||||
self, guild: discord.Guild, before: Sequence[discord.Emoji], after: Sequence[discord.Emoji]
|
||||
):
|
||||
pass
|
||||
|
@@ -3,10 +3,10 @@ import discord
|
||||
|
||||
|
||||
class OnGuildIntegrationsUpdateABC(ABC):
|
||||
@abstractmethod
|
||||
def __init__(self):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
def __init__(self): pass
|
||||
|
||||
@abstractmethod
|
||||
async def on_guild_integrations_update(self, guild: discord.Guild): pass
|
||||
|
||||
async def on_guild_integrations_update(self, guild: discord.Guild):
|
||||
pass
|
||||
|
@@ -3,9 +3,10 @@ import discord
|
||||
|
||||
|
||||
class OnGuildJoinABC(ABC):
|
||||
@abstractmethod
|
||||
def __init__(self):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
def __init__(self): pass
|
||||
|
||||
@abstractmethod
|
||||
async def on_guild_join(self, guild: discord.Guild): pass
|
||||
async def on_guild_join(self, guild: discord.Guild):
|
||||
pass
|
||||
|
@@ -3,8 +3,10 @@ import discord
|
||||
|
||||
|
||||
class OnGuildRemoveABC(ABC):
|
||||
@abstractmethod
|
||||
def __init__(self):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
def __init__(self): pass
|
||||
@abstractmethod
|
||||
async def on_guild_remove(self, guild: discord.Guild): pass
|
||||
async def on_guild_remove(self, guild: discord.Guild):
|
||||
pass
|
||||
|
@@ -3,9 +3,10 @@ import discord
|
||||
|
||||
|
||||
class OnGuildRoleCreateABC(ABC):
|
||||
@abstractmethod
|
||||
def __init__(self):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
def __init__(self): pass
|
||||
|
||||
@abstractmethod
|
||||
async def on_guild_role_create(self, role: discord.Role): pass
|
||||
async def on_guild_role_create(self, role: discord.Role):
|
||||
pass
|
||||
|
@@ -3,9 +3,10 @@ import discord
|
||||
|
||||
|
||||
class OnGuildRoleDeleteABC(ABC):
|
||||
@abstractmethod
|
||||
def __init__(self):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
def __init__(self): pass
|
||||
|
||||
@abstractmethod
|
||||
async def on_guild_role_delete(self, role: discord.Role): pass
|
||||
async def on_guild_role_delete(self, role: discord.Role):
|
||||
pass
|
||||
|
@@ -3,9 +3,10 @@ import discord
|
||||
|
||||
|
||||
class OnGuildRoleUpdateABC(ABC):
|
||||
@abstractmethod
|
||||
def __init__(self):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
def __init__(self): pass
|
||||
|
||||
@abstractmethod
|
||||
async def on_guild_role_update(self, before: discord.Role, after: discord.Role): pass
|
||||
async def on_guild_role_update(self, before: discord.Role, after: discord.Role):
|
||||
pass
|
||||
|
@@ -3,9 +3,10 @@ import discord
|
||||
|
||||
|
||||
class OnGuildUnavailableABC(ABC):
|
||||
@abstractmethod
|
||||
def __init__(self):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
def __init__(self): pass
|
||||
|
||||
@abstractmethod
|
||||
async def on_guild_unavailable(self, guild: discord.Guild): pass
|
||||
async def on_guild_unavailable(self, guild: discord.Guild):
|
||||
pass
|
||||
|
@@ -3,9 +3,10 @@ import discord
|
||||
|
||||
|
||||
class OnGuildUpdateABC(ABC):
|
||||
@abstractmethod
|
||||
def __init__(self):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
def __init__(self): pass
|
||||
|
||||
@abstractmethod
|
||||
async def on_guild_update(self, before: discord.Guild, after: discord.Guild): pass
|
||||
async def on_guild_update(self, before: discord.Guild, after: discord.Guild):
|
||||
pass
|
||||
|
@@ -3,10 +3,10 @@ import discord
|
||||
|
||||
|
||||
class OnInviteCreateABC(ABC):
|
||||
@abstractmethod
|
||||
def __init__(self):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
def __init__(self): pass
|
||||
|
||||
@abstractmethod
|
||||
async def on_invite_create(self, invite: discord.Invite): pass
|
||||
|
||||
async def on_invite_create(self, invite: discord.Invite):
|
||||
pass
|
||||
|
@@ -3,9 +3,10 @@ import discord
|
||||
|
||||
|
||||
class OnInviteDeleteABC(ABC):
|
||||
@abstractmethod
|
||||
def __init__(self):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
def __init__(self): pass
|
||||
|
||||
@abstractmethod
|
||||
async def on_invite_delete(self, invite: discord.Invite): pass
|
||||
async def on_invite_delete(self, invite: discord.Invite):
|
||||
pass
|
||||
|
@@ -3,9 +3,10 @@ import discord
|
||||
|
||||
|
||||
class OnMemberBanABC(ABC):
|
||||
@abstractmethod
|
||||
def __init__(self):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
def __init__(self): pass
|
||||
|
||||
@abstractmethod
|
||||
async def on_member_ban(self, guild: discord.Guild, user: discord.User): pass
|
||||
async def on_member_ban(self, guild: discord.Guild, user: discord.User):
|
||||
pass
|
||||
|
@@ -3,9 +3,10 @@ import discord
|
||||
|
||||
|
||||
class OnMemberJoinABC(ABC):
|
||||
@abstractmethod
|
||||
def __init__(self):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
def __init__(self): pass
|
||||
|
||||
@abstractmethod
|
||||
async def on_member_join(self, member: discord.Member): pass
|
||||
async def on_member_join(self, member: discord.Member):
|
||||
pass
|
||||
|
@@ -3,9 +3,10 @@ import discord
|
||||
|
||||
|
||||
class OnMemberRemoveABC(ABC):
|
||||
@abstractmethod
|
||||
def __init__(self):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
def __init__(self): pass
|
||||
|
||||
@abstractmethod
|
||||
async def on_member_remove(self, member: discord.Member): pass
|
||||
async def on_member_remove(self, member: discord.Member):
|
||||
pass
|
||||
|
@@ -3,9 +3,10 @@ import discord
|
||||
|
||||
|
||||
class OnMemberUnbanABC(ABC):
|
||||
@abstractmethod
|
||||
def __init__(self):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
def __init__(self): pass
|
||||
|
||||
@abstractmethod
|
||||
async def on_member_unban(self, guild: discord.Guild, user: discord.User): pass
|
||||
async def on_member_unban(self, guild: discord.Guild, user: discord.User):
|
||||
pass
|
||||
|
@@ -3,9 +3,10 @@ import discord
|
||||
|
||||
|
||||
class OnMemberUpdateABC(ABC):
|
||||
@abstractmethod
|
||||
def __init__(self):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
def __init__(self): pass
|
||||
|
||||
@abstractmethod
|
||||
async def on_member_update(self, before: discord.Member, after: discord.Member): pass
|
||||
async def on_member_update(self, before: discord.Member, after: discord.Member):
|
||||
pass
|
||||
|
@@ -3,9 +3,10 @@ import discord
|
||||
|
||||
|
||||
class OnMessageABC(ABC):
|
||||
@abstractmethod
|
||||
def __init__(self):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
def __init__(self): pass
|
||||
|
||||
@abstractmethod
|
||||
async def on_message(self, message: discord.Message): pass
|
||||
async def on_message(self, message: discord.Message):
|
||||
pass
|
||||
|
@@ -3,9 +3,10 @@ import discord
|
||||
|
||||
|
||||
class OnMessageDeleteABC(ABC):
|
||||
@abstractmethod
|
||||
def __init__(self):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
def __init__(self): pass
|
||||
|
||||
@abstractmethod
|
||||
async def on_message_delete(self, message: discord.Message): pass
|
||||
async def on_message_delete(self, message: discord.Message):
|
||||
pass
|
||||
|
@@ -3,9 +3,10 @@ import discord
|
||||
|
||||
|
||||
class OnMessageEditABC(ABC):
|
||||
@abstractmethod
|
||||
def __init__(self):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
def __init__(self): pass
|
||||
|
||||
@abstractmethod
|
||||
async def on_message_edit(self, before: discord.Message, after: discord.Message): pass
|
||||
async def on_message_edit(self, before: discord.Message, after: discord.Message):
|
||||
pass
|
||||
|
@@ -3,10 +3,10 @@ import discord
|
||||
|
||||
|
||||
class OnPrivateChannelCreateABC(ABC):
|
||||
@abstractmethod
|
||||
def __init__(self):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
def __init__(self): pass
|
||||
|
||||
@abstractmethod
|
||||
async def on_private_channel_create(self, channel: discord.abc.PrivateChannel): pass
|
||||
|
||||
async def on_private_channel_create(self, channel: discord.abc.PrivateChannel):
|
||||
pass
|
||||
|
@@ -3,10 +3,10 @@ import discord
|
||||
|
||||
|
||||
class OnPrivateChannelDeleteABC(ABC):
|
||||
@abstractmethod
|
||||
def __init__(self):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
def __init__(self): pass
|
||||
|
||||
@abstractmethod
|
||||
async def on_private_channel_delete(self, channel: discord.abc.PrivateChannel): pass
|
||||
|
||||
async def on_private_channel_delete(self, channel: discord.abc.PrivateChannel):
|
||||
pass
|
||||
|
@@ -5,10 +5,10 @@ import discord
|
||||
|
||||
|
||||
class OnPrivateChannelPinsUpdateABC(ABC):
|
||||
@abstractmethod
|
||||
def __init__(self):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
def __init__(self): pass
|
||||
|
||||
@abstractmethod
|
||||
async def on_private_channel_pins_update(self, channel: discord.abc.PrivateChannel, list_pin: Optional[datetime]): pass
|
||||
|
||||
async def on_private_channel_pins_update(self, channel: discord.abc.PrivateChannel, list_pin: Optional[datetime]):
|
||||
pass
|
||||
|
@@ -3,10 +3,10 @@ import discord
|
||||
|
||||
|
||||
class OnPrivateChannelUpdateABC(ABC):
|
||||
@abstractmethod
|
||||
def __init__(self):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
def __init__(self): pass
|
||||
|
||||
@abstractmethod
|
||||
async def on_private_channel_update(self, before: discord.GroupChannel, after: discord.GroupChannel): pass
|
||||
|
||||
async def on_private_channel_update(self, before: discord.GroupChannel, after: discord.GroupChannel):
|
||||
pass
|
||||
|
@@ -4,10 +4,10 @@ from discord import RawReactionActionEvent
|
||||
|
||||
|
||||
class OnRawReactionAddABC(ABC):
|
||||
@abstractmethod
|
||||
def __init__(self):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
def __init__(self): pass
|
||||
|
||||
@abstractmethod
|
||||
async def on_raw_reaction_add(self, payload: RawReactionActionEvent): pass
|
||||
|
||||
async def on_raw_reaction_add(self, payload: RawReactionActionEvent):
|
||||
pass
|
||||
|
@@ -4,10 +4,10 @@ from discord import RawReactionActionEvent
|
||||
|
||||
|
||||
class OnRawReactionClearABC(ABC):
|
||||
@abstractmethod
|
||||
def __init__(self):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
def __init__(self): pass
|
||||
|
||||
@abstractmethod
|
||||
async def on_raw_reaction_clear(self, payload: RawReactionActionEvent): pass
|
||||
|
||||
async def on_raw_reaction_clear(self, payload: RawReactionActionEvent):
|
||||
pass
|
||||
|
@@ -4,10 +4,10 @@ from discord import RawReactionActionEvent
|
||||
|
||||
|
||||
class OnRawReactionClearEmojiABC(ABC):
|
||||
@abstractmethod
|
||||
def __init__(self):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
def __init__(self): pass
|
||||
|
||||
@abstractmethod
|
||||
async def on_raw_reaction_clear_emoji(self, payload: RawReactionActionEvent): pass
|
||||
|
||||
async def on_raw_reaction_clear_emoji(self, payload: RawReactionActionEvent):
|
||||
pass
|
||||
|
@@ -4,10 +4,10 @@ from discord import RawReactionActionEvent
|
||||
|
||||
|
||||
class OnRawReactionRemoveABC(ABC):
|
||||
@abstractmethod
|
||||
def __init__(self):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
def __init__(self): pass
|
||||
|
||||
@abstractmethod
|
||||
async def on_raw_reaction_remove(self, payload: RawReactionActionEvent): pass
|
||||
|
||||
async def on_raw_reaction_remove(self, payload: RawReactionActionEvent):
|
||||
pass
|
||||
|
@@ -3,10 +3,10 @@ import discord
|
||||
|
||||
|
||||
class OnReactionAddABC(ABC):
|
||||
@abstractmethod
|
||||
def __init__(self):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
def __init__(self): pass
|
||||
|
||||
@abstractmethod
|
||||
async def on_reaction_add(self, reaction: discord.Reaction, user: discord.User): pass
|
||||
|
||||
async def on_reaction_add(self, reaction: discord.Reaction, user: discord.User):
|
||||
pass
|
||||
|
@@ -3,10 +3,10 @@ import discord
|
||||
|
||||
|
||||
class OnReactionClearABC(ABC):
|
||||
@abstractmethod
|
||||
def __init__(self):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
def __init__(self): pass
|
||||
|
||||
@abstractmethod
|
||||
async def on_reaction_clear(self, message: discord.Message, reactions: list[discord.Reaction]): pass
|
||||
|
||||
async def on_reaction_clear(self, message: discord.Message, reactions: list[discord.Reaction]):
|
||||
pass
|
||||
|
@@ -3,10 +3,10 @@ import discord
|
||||
|
||||
|
||||
class OnReactionClearEmojiABC(ABC):
|
||||
@abstractmethod
|
||||
def __init__(self):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
def __init__(self): pass
|
||||
|
||||
@abstractmethod
|
||||
async def on_reaction_clear_emoji(self, reaction: discord.Reaction): pass
|
||||
|
||||
async def on_reaction_clear_emoji(self, reaction: discord.Reaction):
|
||||
pass
|
||||
|
@@ -3,10 +3,10 @@ import discord
|
||||
|
||||
|
||||
class OnReactionRemoveABC(ABC):
|
||||
@abstractmethod
|
||||
def __init__(self):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
def __init__(self): pass
|
||||
|
||||
@abstractmethod
|
||||
async def on_reaction_remove(self, reaction: discord.Reaction, user: discord.User): pass
|
||||
|
||||
async def on_reaction_remove(self, reaction: discord.Reaction, user: discord.User):
|
||||
pass
|
||||
|
@@ -2,9 +2,10 @@ from abc import ABC, abstractmethod
|
||||
|
||||
|
||||
class OnReadyABC(ABC):
|
||||
@abstractmethod
|
||||
def __init__(self):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
def __init__(self): pass
|
||||
|
||||
@abstractmethod
|
||||
async def on_ready(self): pass
|
||||
async def on_ready(self):
|
||||
pass
|
||||
|
@@ -2,9 +2,10 @@ from abc import ABC, abstractmethod
|
||||
|
||||
|
||||
class OnResumeABC(ABC):
|
||||
@abstractmethod
|
||||
def __init__(self):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
def __init__(self): pass
|
||||
|
||||
@abstractmethod
|
||||
async def on_resume(self): pass
|
||||
async def on_resume(self):
|
||||
pass
|
||||
|
@@ -5,9 +5,12 @@ import discord
|
||||
|
||||
|
||||
class OnTypingABC(ABC):
|
||||
@abstractmethod
|
||||
def __init__(self):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
def __init__(self): pass
|
||||
|
||||
@abstractmethod
|
||||
async def on_typing(self, channel: discord.abc.Messageable, user: Union[discord.User, discord.Member], when: datetime): pass
|
||||
async def on_typing(
|
||||
self, channel: discord.abc.Messageable, user: Union[discord.User, discord.Member], when: datetime
|
||||
):
|
||||
pass
|
||||
|
@@ -3,9 +3,10 @@ import discord
|
||||
|
||||
|
||||
class OnUserUpdateABC(ABC):
|
||||
@abstractmethod
|
||||
def __init__(self):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
def __init__(self): pass
|
||||
|
||||
@abstractmethod
|
||||
async def on_user_update(self, before: discord.User, after: discord.User): pass
|
||||
async def on_user_update(self, before: discord.User, after: discord.User):
|
||||
pass
|
||||
|
@@ -3,9 +3,12 @@ import discord
|
||||
|
||||
|
||||
class OnVoiceStateUpdateABC(ABC):
|
||||
@abstractmethod
|
||||
def __init__(self):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
def __init__(self): pass
|
||||
|
||||
@abstractmethod
|
||||
async def on_voice_state_update(self, member: discord.Member, before: discord.VoiceState,after: discord.VoiceState): pass
|
||||
async def on_voice_state_update(
|
||||
self, member: discord.Member, before: discord.VoiceState, after: discord.VoiceState
|
||||
):
|
||||
pass
|
||||
|
@@ -3,10 +3,10 @@ import discord
|
||||
|
||||
|
||||
class OnWebhooksUpdateABC(ABC):
|
||||
@abstractmethod
|
||||
def __init__(self):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
def __init__(self): pass
|
||||
|
||||
|
||||
@abstractmethod
|
||||
async def on_webhooks_update(self, channel: discord.abc.GuildChannel): pass
|
||||
async def on_webhooks_update(self, channel: discord.abc.GuildChannel):
|
||||
pass
|
||||
|
@@ -1,21 +1,21 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
"""
|
||||
cpl-discord sh-edraft Common Python library Discord
|
||||
cpl-discord CPL Discord
|
||||
~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
sh-edraft Common Python library link between discord.py and CPL
|
||||
Link between discord.py and CPL
|
||||
|
||||
:copyright: (c) 2022 - 2023 sh-edraft.de
|
||||
:license: MIT, see LICENSE for more details.
|
||||
|
||||
"""
|
||||
|
||||
__title__ = 'cpl_discord.helper'
|
||||
__author__ = 'Sven Heidemann'
|
||||
__license__ = 'MIT'
|
||||
__copyright__ = 'Copyright (c) 2022 - 2023 sh-edraft.de'
|
||||
__version__ = '2022.12.1'
|
||||
__title__ = "cpl_discord.helper"
|
||||
__author__ = "Sven Heidemann"
|
||||
__license__ = "MIT"
|
||||
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
||||
__version__ = "2023.2.0"
|
||||
|
||||
from collections import namedtuple
|
||||
|
||||
@@ -23,5 +23,5 @@ from collections import namedtuple
|
||||
# imports
|
||||
from .to_containers_converter import ToContainersConverter
|
||||
|
||||
VersionInfo = namedtuple('VersionInfo', 'major minor micro')
|
||||
version_info = VersionInfo(major='2022', minor='12', micro='1')
|
||||
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
||||
version_info = VersionInfo(major="2023", minor="2", micro="0")
|
||||
|
@@ -4,7 +4,6 @@ from cpl_discord.container.container import Container
|
||||
|
||||
|
||||
class ToContainersConverter:
|
||||
|
||||
@staticmethod
|
||||
def convert(_l: Union[list[object], Sequence[object]], _t: type) -> list[Container]:
|
||||
values = []
|
||||
|
@@ -1,21 +1,21 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
"""
|
||||
cpl-discord sh-edraft Common Python library Discord
|
||||
cpl-discord CPL Discord
|
||||
~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
sh-edraft Common Python library link between discord.py and CPL
|
||||
Link between discord.py and CPL
|
||||
|
||||
:copyright: (c) 2022 - 2023 sh-edraft.de
|
||||
:license: MIT, see LICENSE for more details.
|
||||
|
||||
"""
|
||||
|
||||
__title__ = 'cpl_discord.service'
|
||||
__author__ = 'Sven Heidemann'
|
||||
__license__ = 'MIT'
|
||||
__copyright__ = 'Copyright (c) 2022 - 2023 sh-edraft.de'
|
||||
__version__ = '2022.12.1'
|
||||
__title__ = "cpl_discord.service"
|
||||
__author__ = "Sven Heidemann"
|
||||
__license__ = "MIT"
|
||||
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
||||
__version__ = "2023.2.0"
|
||||
|
||||
from collections import namedtuple
|
||||
|
||||
@@ -28,5 +28,5 @@ from .discord_collection import DiscordCollection
|
||||
from .discord_service import DiscordService
|
||||
from .discord_service_abc import DiscordServiceABC
|
||||
|
||||
VersionInfo = namedtuple('VersionInfo', 'major minor micro')
|
||||
version_info = VersionInfo(major='2022', minor='12', micro='1')
|
||||
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
||||
version_info = VersionInfo(major="2023", minor="2", micro="0")
|
||||
|
@@ -5,10 +5,9 @@ from cpl_discord.events.on_command_error_abc import OnCommandErrorABC
|
||||
|
||||
|
||||
class CommandErrorHandlerService(OnCommandErrorABC):
|
||||
|
||||
def __init__(self, logger: LoggerABC):
|
||||
OnCommandErrorABC.__init__(self)
|
||||
self._logger = logger
|
||||
|
||||
async def on_command_error(self, ctx: Context, error: CommandError):
|
||||
self._logger.error(__name__, f'Error in command: {ctx.command}', error)
|
||||
self._logger.error(__name__, f"Error in command: {ctx.command}", error)
|
||||
|
@@ -13,15 +13,14 @@ from cpl_query.extension.list import List
|
||||
|
||||
|
||||
class DiscordBotService(DiscordBotServiceABC):
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
config: ConfigurationABC,
|
||||
logger: LoggerABC,
|
||||
discord_bot_settings: DiscordBotSettings,
|
||||
env: ApplicationEnvironmentABC,
|
||||
logging_st: LoggingSettings,
|
||||
discord_service: DiscordServiceABC
|
||||
self,
|
||||
config: ConfigurationABC,
|
||||
logger: LoggerABC,
|
||||
discord_bot_settings: DiscordBotSettings,
|
||||
env: ApplicationEnvironmentABC,
|
||||
logging_st: LoggingSettings,
|
||||
discord_service: DiscordServiceABC,
|
||||
):
|
||||
# services
|
||||
self._config = config
|
||||
@@ -34,51 +33,57 @@ class DiscordBotService(DiscordBotServiceABC):
|
||||
self._discord_settings = self._get_settings(discord_bot_settings)
|
||||
|
||||
# setup super
|
||||
DiscordBotServiceABC.__init__(self, command_prefix=self._discord_settings.prefix, help_command=None, intents=discord.Intents().all())
|
||||
DiscordBotServiceABC.__init__(
|
||||
self, command_prefix=self._discord_settings.prefix, help_command=None, intents=discord.Intents().all()
|
||||
)
|
||||
self._base = super(DiscordBotServiceABC, self)
|
||||
|
||||
@staticmethod
|
||||
def _is_string_invalid(x):
|
||||
return x is None or x == ''
|
||||
return x is None or x == ""
|
||||
|
||||
def _get_settings(self, settings_from_config: DiscordBotSettings) -> DiscordBotSettings:
|
||||
new_settings = DiscordBotSettings()
|
||||
token = None if settings_from_config is None else settings_from_config.token
|
||||
prefix = None if settings_from_config is None else settings_from_config.prefix
|
||||
env_token = self._config.get_configuration('TOKEN')
|
||||
env_prefix = self._config.get_configuration('PREFIX')
|
||||
env_token = self._config.get_configuration("TOKEN")
|
||||
env_prefix = self._config.get_configuration("PREFIX")
|
||||
|
||||
new_settings.from_dict({
|
||||
'Token': env_token if token is None or token == '' else token,
|
||||
'Prefix': ('! ' if self._is_string_invalid(env_prefix) else env_prefix) if self._is_string_invalid(prefix) else prefix
|
||||
})
|
||||
if new_settings.token is None or new_settings.token == '':
|
||||
raise Exception('You have to configure discord token by appsettings or environment variables')
|
||||
new_settings.from_dict(
|
||||
{
|
||||
"Token": env_token if token is None or token == "" else token,
|
||||
"Prefix": ("! " if self._is_string_invalid(env_prefix) else env_prefix)
|
||||
if self._is_string_invalid(prefix)
|
||||
else prefix,
|
||||
}
|
||||
)
|
||||
if new_settings.token is None or new_settings.token == "":
|
||||
raise Exception("You have to configure discord token by appsettings or environment variables")
|
||||
return new_settings
|
||||
|
||||
async def start_async(self):
|
||||
self._logger.trace(__name__, 'Try to connect to discord')
|
||||
self._logger.trace(__name__, "Try to connect to discord")
|
||||
await self.start(self._discord_settings.token)
|
||||
# continue at on_ready
|
||||
|
||||
async def stop_async(self):
|
||||
self._logger.trace(__name__, 'Try to disconnect from discord')
|
||||
self._logger.trace(__name__, "Try to disconnect from discord")
|
||||
try:
|
||||
await self.close()
|
||||
except Exception as e:
|
||||
self._logger.error(__name__, 'Stop failed', e)
|
||||
self._logger.error(__name__, "Stop failed", e)
|
||||
|
||||
async def on_ready(self):
|
||||
self._logger.info(__name__, 'Connected to discord')
|
||||
self._logger.info(__name__, "Connected to discord")
|
||||
|
||||
self._logger.header(f'{self.user.name}:')
|
||||
self._logger.header(f"{self.user.name}:")
|
||||
if self._logging_st.console.value >= LoggingLevelEnum.INFO.value:
|
||||
Console.banner(self._env.application_name if self._env.application_name != '' else 'A bot')
|
||||
Console.banner(self._env.application_name if self._env.application_name != "" else "A bot")
|
||||
|
||||
await self._discord_service.init(self)
|
||||
await self.wait_until_ready()
|
||||
await self.tree.sync()
|
||||
self._logger.debug(__name__, f'Finished syncing commands')
|
||||
self._logger.debug(__name__, f"Finished syncing commands")
|
||||
|
||||
await self._discord_service.on_ready()
|
||||
|
||||
|
@@ -7,19 +7,22 @@ from cpl_query.extension.list import List
|
||||
|
||||
|
||||
class DiscordBotServiceABC(commands.Bot):
|
||||
|
||||
def __init__(self, **kwargs):
|
||||
commands.Bot.__init__(self, **kwargs)
|
||||
|
||||
@abstractmethod
|
||||
async def start_async(self): pass
|
||||
async def start_async(self):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
async def stop_async(self): pass
|
||||
async def stop_async(self):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
async def on_ready(self): pass
|
||||
async def on_ready(self):
|
||||
pass
|
||||
|
||||
@property
|
||||
@abstractmethod
|
||||
def guilds(self) -> List[Guild]: pass
|
||||
def guilds(self) -> List[Guild]:
|
||||
pass
|
||||
|
@@ -9,7 +9,6 @@ from cpl_query.extension import List
|
||||
|
||||
|
||||
class DiscordCollection(DiscordCollectionABC):
|
||||
|
||||
def __init__(self, service_collection: ServiceCollectionABC):
|
||||
DiscordCollectionABC.__init__(self)
|
||||
|
||||
|
@@ -6,18 +6,21 @@ from cpl_query.extension import List
|
||||
|
||||
|
||||
class DiscordCollectionABC(ABC):
|
||||
|
||||
def __init__(self):
|
||||
ABC.__init__(self)
|
||||
|
||||
@abstractmethod
|
||||
def add_command(self, _t: Type[DiscordCommandABC]): pass
|
||||
def add_command(self, _t: Type[DiscordCommandABC]):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
def get_commands(self) -> List[DiscordCommandABC]: pass
|
||||
def get_commands(self) -> List[DiscordCommandABC]:
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
def add_event(self, _t_event: Type, _t: Type): pass
|
||||
def add_event(self, _t_event: Type, _t: Type):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
def get_events_by_base(self, _t_event: Type): pass
|
||||
def get_events_by_base(self, _t_event: Type):
|
||||
pass
|
||||
|
@@ -66,13 +66,7 @@ from cpl_discord.service.discord_service_abc import DiscordServiceABC
|
||||
|
||||
|
||||
class DiscordService(DiscordServiceABC, commands.Cog, metaclass=DiscordCogMeta):
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
logger: LoggerABC,
|
||||
dc_collection: DiscordCollectionABC,
|
||||
services: ServiceProviderABC
|
||||
):
|
||||
def __init__(self, logger: LoggerABC, dc_collection: DiscordCollectionABC, services: ServiceProviderABC):
|
||||
DiscordServiceABC.__init__(self)
|
||||
self._logger = logger
|
||||
self._collection = dc_collection
|
||||
@@ -87,8 +81,8 @@ class DiscordService(DiscordServiceABC, commands.Cog, metaclass=DiscordCogMeta):
|
||||
event_instance = self._services.get_service(event_type)
|
||||
|
||||
func_name = event.__name__
|
||||
if func_name.endswith('ABC'):
|
||||
func_name = func_name.replace('ABC', '')
|
||||
if func_name.endswith("ABC"):
|
||||
func_name = func_name.replace("ABC", "")
|
||||
|
||||
func_name = String.convert_to_snake_case(func_name)
|
||||
|
||||
@@ -96,280 +90,286 @@ class DiscordService(DiscordServiceABC, commands.Cog, metaclass=DiscordCogMeta):
|
||||
func = getattr(event_instance, func_name)
|
||||
await func(*args, **kwargs)
|
||||
except Exception as e:
|
||||
self._logger.error(__name__, f'Cannot execute {func_name} of {type(event_instance).__name__}', e)
|
||||
self._logger.error(__name__, f"Cannot execute {func_name} of {type(event_instance).__name__}", e)
|
||||
|
||||
async def init(self, bot: commands.Bot):
|
||||
try:
|
||||
await bot.add_cog(self)
|
||||
except Exception as e:
|
||||
self._logger.error(__name__, f'{type(self).__name__} initialization failed', e)
|
||||
self._logger.error(__name__, f"{type(self).__name__} initialization failed", e)
|
||||
|
||||
try:
|
||||
for command_type in self._collection.get_commands():
|
||||
self._logger.trace(__name__, f'Register command {command_type.__name__}')
|
||||
self._logger.trace(__name__, f"Register command {command_type.__name__}")
|
||||
command: Cog = self._services.get_service(command_type)
|
||||
if command is None:
|
||||
self._logger.warn(__name__, f'Instance of {command_type.__name__} not found')
|
||||
self._logger.warn(__name__, f"Instance of {command_type.__name__} not found")
|
||||
continue
|
||||
await bot.add_cog(command)
|
||||
except Exception as e:
|
||||
self._logger.error(__name__, f'Registration of commands failed', e)
|
||||
self._logger.error(__name__, f"Registration of commands failed", e)
|
||||
|
||||
@commands.Cog.listener()
|
||||
async def on_connect(self):
|
||||
self._logger.trace(__name__, f'Received on_connect')
|
||||
self._logger.trace(__name__, f"Received on_connect")
|
||||
await self._handle_event(OnConnectABC)
|
||||
|
||||
@commands.Cog.listener()
|
||||
async def on_command(self, ctx: Context):
|
||||
self._logger.trace(__name__, f'Received on_command')
|
||||
self._logger.trace(__name__, f"Received on_command")
|
||||
await self._handle_event(OnCommandABC, ctx)
|
||||
|
||||
@commands.Cog.listener()
|
||||
async def on_command_error(self, ctx: Context, error: CommandError):
|
||||
self._logger.trace(__name__, f'Received on_command_error')
|
||||
self._logger.trace(__name__, f"Received on_command_error")
|
||||
await self._handle_event(OnCommandErrorABC, ctx, error)
|
||||
|
||||
@commands.Cog.listener()
|
||||
async def on_command_completion(self, ctx: Context):
|
||||
self._logger.trace(__name__, f'Received on_command_completion')
|
||||
self._logger.trace(__name__, f"Received on_command_completion")
|
||||
await self._handle_event(OnCommandCompletionABC, ctx)
|
||||
|
||||
@commands.Cog.listener()
|
||||
async def on_disconnect(self):
|
||||
self._logger.trace(__name__, f'Received on_disconnect')
|
||||
self._logger.trace(__name__, f"Received on_disconnect")
|
||||
await self._handle_event(OnDisconnectABC)
|
||||
|
||||
@commands.Cog.listener()
|
||||
async def on_error(self, event: str, *args, **kwargs):
|
||||
self._logger.trace(__name__, f'Received on_error')
|
||||
self._logger.trace(__name__, f"Received on_error")
|
||||
await self._handle_event(OnErrorABC, event, *args, **kwargs)
|
||||
|
||||
async def on_ready(self):
|
||||
self._logger.trace(__name__, f'Received on_ready')
|
||||
self._logger.trace(__name__, f"Received on_ready")
|
||||
await self._handle_event(OnReadyABC)
|
||||
|
||||
@commands.Cog.listener()
|
||||
async def on_resume(self):
|
||||
self._logger.trace(__name__, f'Received on_resume')
|
||||
self._logger.trace(__name__, f"Received on_resume")
|
||||
await self._handle_event(OnResumeABC)
|
||||
|
||||
@commands.Cog.listener()
|
||||
async def on_error(self, event: str, *args, **kwargs):
|
||||
self._logger.trace(__name__, f'Received on_error:\n\t{event}\n\t{args}\n\t{kwargs}')
|
||||
self._logger.trace(__name__, f"Received on_error:\n\t{event}\n\t{args}\n\t{kwargs}")
|
||||
await self._handle_event(OnReadyABC, event, *args, **kwargs)
|
||||
|
||||
@commands.Cog.listener()
|
||||
async def on_typing(self, channel: discord.abc.Messageable, user: Union[discord.User, discord.Member], when: datetime):
|
||||
self._logger.trace(__name__, f'Received on_typing:\n\t{channel}\n\t{user}\n\t{when}')
|
||||
async def on_typing(
|
||||
self, channel: discord.abc.Messageable, user: Union[discord.User, discord.Member], when: datetime
|
||||
):
|
||||
self._logger.trace(__name__, f"Received on_typing:\n\t{channel}\n\t{user}\n\t{when}")
|
||||
await self._handle_event(OnTypingABC, channel, user, when)
|
||||
|
||||
@commands.Cog.listener()
|
||||
async def on_message(self, message: discord.Message):
|
||||
self._logger.trace(__name__, f'Received on_message:\n\t{message}')
|
||||
self._logger.trace(__name__, f"Received on_message:\n\t{message}")
|
||||
await self._handle_event(OnMessageABC, message)
|
||||
|
||||
@commands.Cog.listener()
|
||||
async def on_message_delete(self, message: discord.Message):
|
||||
self._logger.trace(__name__, f'Received on_message_delete:\n\t{message}')
|
||||
self._logger.trace(__name__, f"Received on_message_delete:\n\t{message}")
|
||||
await self._handle_event(OnMessageDeleteABC, message)
|
||||
|
||||
@commands.Cog.listener()
|
||||
async def on_bulk_message_delete(self, messages: list[discord.Message]):
|
||||
self._logger.trace(__name__, f'Received on_bulk_message_delete:\n\t{len(messages)}')
|
||||
self._logger.trace(__name__, f"Received on_bulk_message_delete:\n\t{len(messages)}")
|
||||
await self._handle_event(OnBulkMessageDeleteABC, messages)
|
||||
|
||||
@commands.Cog.listener()
|
||||
async def on_message_edit(self, before: discord.Message, after: discord.Message):
|
||||
self._logger.trace(__name__, f'Received on_message_edit:\n\t{before}\n\t{after}')
|
||||
self._logger.trace(__name__, f"Received on_message_edit:\n\t{before}\n\t{after}")
|
||||
await self._handle_event(OnMessageEditABC, before, after)
|
||||
|
||||
@commands.Cog.listener()
|
||||
async def on_raw_reaction_add(self, payload: RawReactionActionEvent):
|
||||
self._logger.trace(__name__, f'Received on_raw_reaction_add')
|
||||
self._logger.trace(__name__, f"Received on_raw_reaction_add")
|
||||
await self._handle_event(OnRawReactionAddABC, payload)
|
||||
|
||||
@commands.Cog.listener()
|
||||
async def on_raw_reaction_remove(self, payload: RawReactionActionEvent):
|
||||
self._logger.trace(__name__, f'Received on_raw_reaction_remove')
|
||||
self._logger.trace(__name__, f"Received on_raw_reaction_remove")
|
||||
await self._handle_event(OnRawReactionRemoveABC, payload)
|
||||
|
||||
@commands.Cog.listener()
|
||||
async def on_raw_reaction_clear(self, payload: RawReactionActionEvent):
|
||||
self._logger.trace(__name__, f'Received on_raw_reaction_clear')
|
||||
self._logger.trace(__name__, f"Received on_raw_reaction_clear")
|
||||
await self._handle_event(OnRawReactionClearABC, payload)
|
||||
|
||||
@commands.Cog.listener()
|
||||
async def on_raw_reaction_clear_emoji(self, payload: RawReactionActionEvent):
|
||||
self._logger.trace(__name__, f'Received on_raw_reaction_clear_emoji')
|
||||
self._logger.trace(__name__, f"Received on_raw_reaction_clear_emoji")
|
||||
await self._handle_event(OnRawReactionClearEmojiABC, payload)
|
||||
|
||||
@commands.Cog.listener()
|
||||
async def on_reaction_add(self, reaction: discord.Reaction, user: discord.User):
|
||||
self._logger.trace(__name__, f'Received on_reaction_add:\n\t{reaction}\n\t{user}')
|
||||
self._logger.trace(__name__, f"Received on_reaction_add:\n\t{reaction}\n\t{user}")
|
||||
await self._handle_event(OnReactionAddABC, reaction, user)
|
||||
|
||||
@commands.Cog.listener()
|
||||
async def on_reaction_remove(self, reaction: discord.Reaction, user: discord.User):
|
||||
self._logger.trace(__name__, f'Received on_reaction_remove:\n\t{reaction}\n\t{user}')
|
||||
self._logger.trace(__name__, f"Received on_reaction_remove:\n\t{reaction}\n\t{user}")
|
||||
await self._handle_event(OnReactionRemoveABC, reaction, user)
|
||||
|
||||
@commands.Cog.listener()
|
||||
async def on_reaction_clear(self, message: discord.Message, reactions: list[discord.Reaction]):
|
||||
self._logger.trace(__name__, f'Received on_reaction_reon_reaction_clearmove:\n\t{message}\n\t{len(reactions)}')
|
||||
self._logger.trace(__name__, f"Received on_reaction_reon_reaction_clearmove:\n\t{message}\n\t{len(reactions)}")
|
||||
await self._handle_event(OnReactionClearABC, message, reactions)
|
||||
|
||||
@commands.Cog.listener()
|
||||
async def on_reaction_clear_emoji(self, reaction: discord.Reaction):
|
||||
self._logger.trace(__name__, f'Received on_reaction_clear_emoji:\n\t{reaction}')
|
||||
self._logger.trace(__name__, f"Received on_reaction_clear_emoji:\n\t{reaction}")
|
||||
await self._handle_event(OnReactionClearEmojiABC, reaction)
|
||||
|
||||
@commands.Cog.listener()
|
||||
async def on_private_channel_delete(self, channel: discord.abc.PrivateChannel):
|
||||
self._logger.trace(__name__, f'Received on_private_channel_delete:\n\t{channel}')
|
||||
self._logger.trace(__name__, f"Received on_private_channel_delete:\n\t{channel}")
|
||||
await self._handle_event(OnPrivateChannelDeleteABC, channel)
|
||||
|
||||
@commands.Cog.listener()
|
||||
async def on_private_channel_create(self, channel: discord.abc.PrivateChannel):
|
||||
self._logger.trace(__name__, f'Received on_private_channel_create:\n\t{channel}')
|
||||
self._logger.trace(__name__, f"Received on_private_channel_create:\n\t{channel}")
|
||||
await self._handle_event(OnPrivateChannelCreateABC, channel)
|
||||
|
||||
@commands.Cog.listener()
|
||||
async def on_private_channel_update(self, before: discord.GroupChannel, after: discord.GroupChannel):
|
||||
self._logger.trace(__name__, f'Received on_private_channel_update:\n\t{before}\n\t{after}')
|
||||
self._logger.trace(__name__, f"Received on_private_channel_update:\n\t{before}\n\t{after}")
|
||||
await self._handle_event(OnPrivateChannelUpdateABC, before, after)
|
||||
|
||||
@commands.Cog.listener()
|
||||
async def on_private_channel_pins_update(self, channel: discord.abc.PrivateChannel, list_pin: Optional[datetime]):
|
||||
self._logger.trace(__name__, f'Received on_private_channel_pins_update:\n\t{channel}\n\t{list_pin}')
|
||||
self._logger.trace(__name__, f"Received on_private_channel_pins_update:\n\t{channel}\n\t{list_pin}")
|
||||
await self._handle_event(OnPrivateChannelPinsUpdateABC, channel, list_pin)
|
||||
|
||||
@commands.Cog.listener()
|
||||
async def on_guild_channel_delete(self, channel: discord.abc.GuildChannel):
|
||||
self._logger.trace(__name__, f'Received on_guild_channel_delete:\n\t{channel}')
|
||||
self._logger.trace(__name__, f"Received on_guild_channel_delete:\n\t{channel}")
|
||||
await self._handle_event(OnGuildChannelDeleteABC, channel)
|
||||
|
||||
@commands.Cog.listener()
|
||||
async def on_guild_channel_create(self, channel: discord.abc.GuildChannel):
|
||||
self._logger.trace(__name__, f'Received on_guild_channel_create:\n\t{channel}')
|
||||
self._logger.trace(__name__, f"Received on_guild_channel_create:\n\t{channel}")
|
||||
await self._handle_event(OnGuildChannelCreateABC, channel)
|
||||
|
||||
@commands.Cog.listener()
|
||||
async def on_guild_channel_update(self, before: discord.abc.GuildChannel, after: discord.abc.GuildChannel):
|
||||
self._logger.trace(__name__, f'Received on_guild_channel_update:\n\t{before}\n\t{after}')
|
||||
self._logger.trace(__name__, f"Received on_guild_channel_update:\n\t{before}\n\t{after}")
|
||||
await self._handle_event(OnGuildChannelUpdateABC, before, after)
|
||||
|
||||
@commands.Cog.listener()
|
||||
async def on_guild_channel_pins_update(self, channel: discord.abc.GuildChannel, list_pin: Optional[datetime]):
|
||||
self._logger.trace(__name__, f'Received on_guild_channel_pins_update:\n\t{channel}\n\t{list_pin}')
|
||||
self._logger.trace(__name__, f"Received on_guild_channel_pins_update:\n\t{channel}\n\t{list_pin}")
|
||||
await self._handle_event(OnGuildChannelPinsUpdateABC, channel, list_pin)
|
||||
|
||||
@commands.Cog.listener()
|
||||
async def on_guild_integrations_update(self, guild: discord.Guild):
|
||||
self._logger.trace(__name__, f'Received on_guild_integrations_update:\n\t{guild}')
|
||||
self._logger.trace(__name__, f"Received on_guild_integrations_update:\n\t{guild}")
|
||||
await self._handle_event(OnGuildIntegrationsUpdateABC, guild)
|
||||
|
||||
@commands.Cog.listener()
|
||||
async def on_webhooks_update(self, channel: discord.abc.GuildChannel):
|
||||
self._logger.trace(__name__, f'Received on_webhooks_update:\n\t{channel}')
|
||||
self._logger.trace(__name__, f"Received on_webhooks_update:\n\t{channel}")
|
||||
await self._handle_event(OnWebhooksUpdateABC, channel)
|
||||
|
||||
@commands.Cog.listener()
|
||||
async def on_member_join(self, member: discord.Member):
|
||||
self._logger.trace(__name__, f'Received on_member_join:\n\t{member}')
|
||||
self._logger.trace(__name__, f"Received on_member_join:\n\t{member}")
|
||||
await self._handle_event(OnMemberJoinABC, member)
|
||||
|
||||
@commands.Cog.listener()
|
||||
async def on_member_remove(self, member: discord.Member):
|
||||
self._logger.trace(__name__, f'Received on_member_remove:\n\t{member}')
|
||||
self._logger.trace(__name__, f"Received on_member_remove:\n\t{member}")
|
||||
await self._handle_event(OnMemberRemoveABC, member)
|
||||
|
||||
@commands.Cog.listener()
|
||||
async def on_member_update(self, before: discord.Member, after: discord.Member):
|
||||
self._logger.trace(__name__, f'Received on_member_update:\n\t{before}\n\t{after}')
|
||||
self._logger.trace(__name__, f"Received on_member_update:\n\t{before}\n\t{after}")
|
||||
await self._handle_event(OnMemberUpdateABC, before, after)
|
||||
|
||||
@commands.Cog.listener()
|
||||
async def on_user_update(self, before: discord.User, after: discord.User):
|
||||
self._logger.trace(__name__, f'Received on_user_update:\n\t{before}\n\t{after}')
|
||||
self._logger.trace(__name__, f"Received on_user_update:\n\t{before}\n\t{after}")
|
||||
await self._handle_event(OnUserUpdateABC, before, after)
|
||||
|
||||
@commands.Cog.listener()
|
||||
async def on_guild_join(self, guild: discord.Guild):
|
||||
self._logger.trace(__name__, f'Received on_guild_join:\n\t{guild}')
|
||||
self._logger.trace(__name__, f"Received on_guild_join:\n\t{guild}")
|
||||
await self._handle_event(OnGuildJoinABC, guild)
|
||||
|
||||
@commands.Cog.listener()
|
||||
async def on_guild_remove(self, guild: discord.Guild):
|
||||
self._logger.trace(__name__, f'Received on_guild_remove:\n\t{guild}')
|
||||
self._logger.trace(__name__, f"Received on_guild_remove:\n\t{guild}")
|
||||
await self._handle_event(OnGuildRemoveABC, guild)
|
||||
|
||||
@commands.Cog.listener()
|
||||
async def on_guild_update(self, before: discord.Guild, after: discord.Guild):
|
||||
self._logger.trace(__name__, f'Received on_guild_update:\n\t{before}\n\t{after}')
|
||||
self._logger.trace(__name__, f"Received on_guild_update:\n\t{before}\n\t{after}")
|
||||
await self._handle_event(OnGuildUpdateABC, before, after)
|
||||
|
||||
@commands.Cog.listener()
|
||||
async def on_guild_role_create(self, role: discord.Role):
|
||||
self._logger.trace(__name__, f'Received on_guild_role_create:\n\t{role}')
|
||||
self._logger.trace(__name__, f"Received on_guild_role_create:\n\t{role}")
|
||||
await self._handle_event(OnGuildRoleCreateABC, role)
|
||||
|
||||
@commands.Cog.listener()
|
||||
async def on_guild_role_delete(self, role: discord.Role):
|
||||
self._logger.trace(__name__, f'Received on_guild_role_delete:\n\t{role}')
|
||||
self._logger.trace(__name__, f"Received on_guild_role_delete:\n\t{role}")
|
||||
await self._handle_event(OnGuildRoleDeleteABC, role)
|
||||
|
||||
@commands.Cog.listener()
|
||||
async def on_guild_role_update(self, before: discord.Role, after: discord.Role):
|
||||
self._logger.trace(__name__, f'Received on_guild_role_update:\n\t{before}\n\t{after}')
|
||||
self._logger.trace(__name__, f"Received on_guild_role_update:\n\t{before}\n\t{after}")
|
||||
await self._handle_event(OnGuildRoleUpdateABC, before, after)
|
||||
|
||||
@commands.Cog.listener()
|
||||
async def on_guild_emojis_update(self, guild: discord.Guild, before: Sequence[discord.Emoji], after: Sequence[discord.Emoji]):
|
||||
self._logger.trace(__name__, f'Received on_guild_emojis_update:\n\t{guild}\n\t{before}\n\t{after}')
|
||||
async def on_guild_emojis_update(
|
||||
self, guild: discord.Guild, before: Sequence[discord.Emoji], after: Sequence[discord.Emoji]
|
||||
):
|
||||
self._logger.trace(__name__, f"Received on_guild_emojis_update:\n\t{guild}\n\t{before}\n\t{after}")
|
||||
await self._handle_event(OnGuildEmojisUpdateABC, guild, before, after)
|
||||
|
||||
@commands.Cog.listener()
|
||||
async def on_guild_available(self, guild: discord.Guild):
|
||||
self._logger.trace(__name__, f'Received on_guild_available:\n\t{guild}')
|
||||
self._logger.trace(__name__, f"Received on_guild_available:\n\t{guild}")
|
||||
await self._handle_event(OnGuildAvailableABC, guild)
|
||||
|
||||
@commands.Cog.listener()
|
||||
async def on_guild_unavailable(self, guild: discord.Guild):
|
||||
self._logger.trace(__name__, f'Received on_guild_unavailable:\n\t{guild}')
|
||||
self._logger.trace(__name__, f"Received on_guild_unavailable:\n\t{guild}")
|
||||
await self._handle_event(OnGuildUnavailableABC, guild)
|
||||
|
||||
@commands.Cog.listener()
|
||||
async def on_voice_state_update(self, member: discord.Member, before: discord.VoiceState, after: discord.VoiceState):
|
||||
self._logger.trace(__name__, f'Received on_voice_state_update:\n\t{member}\n\t{before}\n\t{after}')
|
||||
async def on_voice_state_update(
|
||||
self, member: discord.Member, before: discord.VoiceState, after: discord.VoiceState
|
||||
):
|
||||
self._logger.trace(__name__, f"Received on_voice_state_update:\n\t{member}\n\t{before}\n\t{after}")
|
||||
await self._handle_event(OnVoiceStateUpdateABC, member, before, after)
|
||||
|
||||
@commands.Cog.listener()
|
||||
async def on_member_ban(self, guild: discord.Guild, user: discord.User):
|
||||
self._logger.trace(__name__, f'Received on_member_ban:\n\t{guild}\n\t{user}')
|
||||
self._logger.trace(__name__, f"Received on_member_ban:\n\t{guild}\n\t{user}")
|
||||
await self._handle_event(OnMemberBanABC, guild, user)
|
||||
|
||||
@commands.Cog.listener()
|
||||
async def on_member_unban(self, guild: discord.Guild, user: discord.User):
|
||||
self._logger.trace(__name__, f'Received on_member_unban:\n\t{guild}\n\t{user}')
|
||||
self._logger.trace(__name__, f"Received on_member_unban:\n\t{guild}\n\t{user}")
|
||||
await self._handle_event(OnMemberUnbanABC, guild, user)
|
||||
|
||||
@commands.Cog.listener()
|
||||
async def on_invite_create(self, invite: discord.Invite):
|
||||
self._logger.trace(__name__, f'Received on_invite_create:\n\t{invite}')
|
||||
self._logger.trace(__name__, f"Received on_invite_create:\n\t{invite}")
|
||||
await self._handle_event(OnInviteCreateABC, invite)
|
||||
|
||||
@commands.Cog.listener()
|
||||
async def on_invite_delete(self, invite: discord.Invite):
|
||||
self._logger.trace(__name__, f'Received on_invite_create:\n\t{invite}')
|
||||
self._logger.trace(__name__, f"Received on_invite_create:\n\t{invite}")
|
||||
await self._handle_event(OnInviteDeleteABC, invite)
|
||||
|
||||
@commands.Cog.listener()
|
||||
async def on_group_join(self, channel: discord.GroupChannel, user: discord.User):
|
||||
self._logger.trace(__name__, f'Received on_group_join:\n\t{channel}\n\t{user}')
|
||||
self._logger.trace(__name__, f"Received on_group_join:\n\t{channel}\n\t{user}")
|
||||
await self._handle_event(OnGroupJoinABC, channel, user)
|
||||
|
||||
@commands.Cog.listener()
|
||||
async def on_group_remove(self, channel: discord.GroupChannel, user: discord.User):
|
||||
self._logger.trace(__name__, f'Received on_group_remove:\n\t{channel}\n\t{user}')
|
||||
self._logger.trace(__name__, f"Received on_group_remove:\n\t{channel}\n\t{user}")
|
||||
await self._handle_event(OnGroupRemoveABC, channel, user)
|
||||
|
@@ -7,153 +7,207 @@ from discord.ext import commands
|
||||
|
||||
|
||||
class DiscordServiceABC(ABC):
|
||||
|
||||
def __init__(self):
|
||||
ABC.__init__(self)
|
||||
|
||||
@abstractmethod
|
||||
def init(self, bot: commands.Bot): pass
|
||||
def init(self, bot: commands.Bot):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
async def on_connect(self): pass
|
||||
async def on_connect(self):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
async def on_command(self): pass
|
||||
async def on_command(self):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
async def on_command_error(self): pass
|
||||
async def on_command_error(self):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
async def on_command_completion(self): pass
|
||||
async def on_command_completion(self):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
async def on_disconnect(self): pass
|
||||
async def on_disconnect(self):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
async def on_error(self, event: str, *args, **kwargs): pass
|
||||
async def on_error(self, event: str, *args, **kwargs):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
async def on_ready(self): pass
|
||||
async def on_ready(self):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
async def on_resume(self): pass
|
||||
async def on_resume(self):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
async def on_error(self, event: str, *args, **kwargs): pass
|
||||
async def on_error(self, event: str, *args, **kwargs):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
async def on_typing(self, channel: discord.abc.Messageable, user: Union[discord.User, discord.Member], when: datetime): pass
|
||||
async def on_typing(
|
||||
self, channel: discord.abc.Messageable, user: Union[discord.User, discord.Member], when: datetime
|
||||
):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
async def on_message(self, message: discord.Message): pass
|
||||
async def on_message(self, message: discord.Message):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
async def on_message_delete(self, message: discord.Message): pass
|
||||
async def on_message_delete(self, message: discord.Message):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
async def on_bulk_message_delete(self, messages: list[discord.Message]): pass
|
||||
async def on_bulk_message_delete(self, messages: list[discord.Message]):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
async def on_message_edit(self, before: discord.Message, after: discord.Message): pass
|
||||
async def on_message_edit(self, before: discord.Message, after: discord.Message):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
async def on_reaction_add(self, reaction: discord.Reaction, user: discord.User): pass
|
||||
async def on_reaction_add(self, reaction: discord.Reaction, user: discord.User):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
async def on_reaction_remove(self, reaction: discord.Reaction, user: discord.User): pass
|
||||
async def on_reaction_remove(self, reaction: discord.Reaction, user: discord.User):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
async def on_reaction_clear(self, message: discord.Message, reactions: list[discord.Reaction]): pass
|
||||
async def on_reaction_clear(self, message: discord.Message, reactions: list[discord.Reaction]):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
async def on_reaction_clear_emoji(self, reaction: discord.Reaction): pass
|
||||
async def on_reaction_clear_emoji(self, reaction: discord.Reaction):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
async def on_private_channel_delete(self, channel: discord.abc.PrivateChannel): pass
|
||||
async def on_private_channel_delete(self, channel: discord.abc.PrivateChannel):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
async def on_private_channel_create(self, channel: discord.abc.PrivateChannel): pass
|
||||
async def on_private_channel_create(self, channel: discord.abc.PrivateChannel):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
async def on_private_channel_update(self, before: discord.GroupChannel, after: discord.GroupChannel): pass
|
||||
async def on_private_channel_update(self, before: discord.GroupChannel, after: discord.GroupChannel):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
async def on_private_channel_pins_update(self, channel: discord.abc.PrivateChannel, list_pin: Optional[datetime]): pass
|
||||
async def on_private_channel_pins_update(self, channel: discord.abc.PrivateChannel, list_pin: Optional[datetime]):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
async def on_guild_channel_delete(self, channel: discord.abc.GuildChannel): pass
|
||||
async def on_guild_channel_delete(self, channel: discord.abc.GuildChannel):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
async def on_guild_channel_create(self, channel: discord.abc.GuildChannel): pass
|
||||
async def on_guild_channel_create(self, channel: discord.abc.GuildChannel):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
async def on_guild_channel_update(self, before: discord.abc.GuildChannel, after: discord.abc.GuildChannel): pass
|
||||
async def on_guild_channel_update(self, before: discord.abc.GuildChannel, after: discord.abc.GuildChannel):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
async def on_guild_channel_pins_update(self, channel: discord.abc.GuildChannel, list_pin: Optional[datetime]): pass
|
||||
async def on_guild_channel_pins_update(self, channel: discord.abc.GuildChannel, list_pin: Optional[datetime]):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
async def on_guild_integrations_update(self, guild: discord.Guild): pass
|
||||
async def on_guild_integrations_update(self, guild: discord.Guild):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
async def on_webhooks_update(self, channel: discord.abc.GuildChannel): pass
|
||||
async def on_webhooks_update(self, channel: discord.abc.GuildChannel):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
async def on_member_join(self, member: discord.Member): pass
|
||||
async def on_member_join(self, member: discord.Member):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
async def on_member_remove(self, member: discord.Member): pass
|
||||
async def on_member_remove(self, member: discord.Member):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
async def on_member_update(self, before: discord.Member, after: discord.Member): pass
|
||||
async def on_member_update(self, before: discord.Member, after: discord.Member):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
async def on_user_update(self, before: discord.User, after: discord.User): pass
|
||||
async def on_user_update(self, before: discord.User, after: discord.User):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
async def on_guild_join(self, guild: discord.Guild): pass
|
||||
async def on_guild_join(self, guild: discord.Guild):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
async def on_guild_remove(self, guild: discord.Guild): pass
|
||||
async def on_guild_remove(self, guild: discord.Guild):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
async def on_guild_update(self, before: discord.Guild, after: discord.Guild): pass
|
||||
async def on_guild_update(self, before: discord.Guild, after: discord.Guild):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
async def on_guild_role_create(self, role: discord.Role): pass
|
||||
async def on_guild_role_create(self, role: discord.Role):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
async def on_guild_role_delete(self, role: discord.Role): pass
|
||||
async def on_guild_role_delete(self, role: discord.Role):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
async def on_guild_role_update(self, before: discord.Role, after: discord.Role): pass
|
||||
async def on_guild_role_update(self, before: discord.Role, after: discord.Role):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
async def on_guild_emojis_update(self, guild: discord.Guild, before: Sequence[discord.Emoji], after: Sequence[discord.Emoji]): pass
|
||||
async def on_guild_emojis_update(
|
||||
self, guild: discord.Guild, before: Sequence[discord.Emoji], after: Sequence[discord.Emoji]
|
||||
):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
async def on_guild_available(self, guild: discord.Guild): pass
|
||||
async def on_guild_available(self, guild: discord.Guild):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
async def on_guild_unavailable(self, guild: discord.Guild): pass
|
||||
async def on_guild_unavailable(self, guild: discord.Guild):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
async def on_voice_state_update(self, member: discord.Member, before: discord.VoiceState, after: discord.VoiceState): pass
|
||||
async def on_voice_state_update(
|
||||
self, member: discord.Member, before: discord.VoiceState, after: discord.VoiceState
|
||||
):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
async def on_member_ban(self, guild: discord.Guild, user: discord.User): pass
|
||||
async def on_member_ban(self, guild: discord.Guild, user: discord.User):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
async def on_member_unban(self, guild: discord.Guild, user: discord.User): pass
|
||||
async def on_member_unban(self, guild: discord.Guild, user: discord.User):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
async def on_invite_create(self, invite: discord.Invite): pass
|
||||
async def on_invite_create(self, invite: discord.Invite):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
async def on_invite_delete(self, invite: discord.Invite): pass
|
||||
async def on_invite_delete(self, invite: discord.Invite):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
async def on_group_join(self, chhanel: discord.GroupChannel, user: discord.User): pass
|
||||
async def on_group_join(self, chhanel: discord.GroupChannel, user: discord.User):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
async def on_group_remove(self, chhanel: discord.GroupChannel, user: discord.User): pass
|
||||
async def on_group_remove(self, chhanel: discord.GroupChannel, user: discord.User):
|
||||
pass
|
||||
|
Reference in New Issue
Block a user