|
|
|
@@ -12,7 +12,9 @@ from bot_core.pipes.date_time_offset_pipe import DateTimeOffsetPipe
|
|
|
|
|
from bot_data.abc.client_repository_abc import ClientRepositoryABC
|
|
|
|
|
from bot_data.abc.known_user_repository_abc import KnownUserRepositoryABC
|
|
|
|
|
from bot_data.abc.user_joined_server_repository_abc import UserJoinedServerRepositoryABC
|
|
|
|
|
from bot_data.abc.user_joined_voice_channel_repository_abc import UserJoinedVoiceChannelRepositoryABC
|
|
|
|
|
from bot_data.abc.user_joined_voice_channel_repository_abc import (
|
|
|
|
|
UserJoinedVoiceChannelRepositoryABC,
|
|
|
|
|
)
|
|
|
|
|
from bot_data.abc.user_repository_abc import UserRepositoryABC
|
|
|
|
|
from bot_data.model.client import Client
|
|
|
|
|
from bot_data.model.known_user import KnownUser
|
|
|
|
@@ -26,7 +28,6 @@ from modules.base.configuration.base_server_settings import BaseServerSettings
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class DatabaseOnReadyEvent(OnReadyABC):
|
|
|
|
|
|
|
|
|
|
def __init__(
|
|
|
|
|
self,
|
|
|
|
|
config: ConfigurationABC,
|
|
|
|
@@ -40,7 +41,7 @@ class DatabaseOnReadyEvent(OnReadyABC):
|
|
|
|
|
known_users: KnownUserRepositoryABC,
|
|
|
|
|
user_joins: UserJoinedServerRepositoryABC,
|
|
|
|
|
user_joins_vc: UserJoinedVoiceChannelRepositoryABC,
|
|
|
|
|
dtp: DateTimeOffsetPipe
|
|
|
|
|
dtp: DateTimeOffsetPipe,
|
|
|
|
|
):
|
|
|
|
|
self._config = config
|
|
|
|
|
|
|
|
|
@@ -57,55 +58,67 @@ class DatabaseOnReadyEvent(OnReadyABC):
|
|
|
|
|
self._dtp = dtp
|
|
|
|
|
|
|
|
|
|
OnReadyABC.__init__(self)
|
|
|
|
|
self._logger.info(__name__, f'Module {type(self)} loaded')
|
|
|
|
|
self._logger.info(__name__, f"Module {type(self)} loaded")
|
|
|
|
|
|
|
|
|
|
def _validate_init_time(self):
|
|
|
|
|
try:
|
|
|
|
|
start_time = self._config.get_configuration('Database_StartTime')
|
|
|
|
|
init_time = round((datetime.now() - datetime.strptime(start_time, '%Y-%m-%d %H:%M:%S.%f')).total_seconds(), 2)
|
|
|
|
|
self._config.add_configuration('Database_InitTime', str(init_time))
|
|
|
|
|
self._logger.debug(__name__, f'Database Init time: {init_time}s')
|
|
|
|
|
start_time = self._config.get_configuration("Database_StartTime")
|
|
|
|
|
init_time = round(
|
|
|
|
|
(
|
|
|
|
|
datetime.now()
|
|
|
|
|
- datetime.strptime(start_time, "%Y-%m-%d %H:%M:%S.%f")
|
|
|
|
|
).total_seconds(),
|
|
|
|
|
2,
|
|
|
|
|
)
|
|
|
|
|
self._config.add_configuration("Database_InitTime", str(init_time))
|
|
|
|
|
self._logger.debug(__name__, f"Database Init time: {init_time}s")
|
|
|
|
|
# print warning if initialisation took too long
|
|
|
|
|
if init_time >= 30:
|
|
|
|
|
self._logger.warn(
|
|
|
|
|
__name__, 'It takes too long to prepare the database!')
|
|
|
|
|
__name__, "It takes too long to prepare the database!"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
# print error if initialisation took way too long
|
|
|
|
|
elif init_time >= 90:
|
|
|
|
|
self._logger.error(
|
|
|
|
|
__name__, 'It takes far too long to prepare the database!!!')
|
|
|
|
|
__name__, "It takes far too long to prepare the database!!!"
|
|
|
|
|
)
|
|
|
|
|
except Exception as e: #
|
|
|
|
|
self._logger.error(__name__, 'Database init time calculation failed', e)
|
|
|
|
|
self._logger.error(__name__, "Database init time calculation failed", e)
|
|
|
|
|
return
|
|
|
|
|
|
|
|
|
|
def _check_known_users(self):
|
|
|
|
|
self._logger.debug(__name__, f'Start checking KnownUsers table, {len(self._bot.users)}')
|
|
|
|
|
self._logger.debug(
|
|
|
|
|
__name__, f"Start checking KnownUsers table, {len(self._bot.users)}"
|
|
|
|
|
)
|
|
|
|
|
for u in self._bot.users:
|
|
|
|
|
u: discord.User = u
|
|
|
|
|
try:
|
|
|
|
|
if u.bot:
|
|
|
|
|
self._logger.trace(__name__, f'User {u.id} is ignored, because its a bot')
|
|
|
|
|
self._logger.trace(
|
|
|
|
|
__name__, f"User {u.id} is ignored, because its a bot"
|
|
|
|
|
)
|
|
|
|
|
continue
|
|
|
|
|
|
|
|
|
|
user = self._known_users.find_user_by_discord_id(u.id)
|
|
|
|
|
if user is not None:
|
|
|
|
|
continue
|
|
|
|
|
|
|
|
|
|
self._logger.warn(__name__, f'Unknown user: {u.id}')
|
|
|
|
|
self._logger.debug(__name__, f'Add user: {u.id}')
|
|
|
|
|
self._logger.warn(__name__, f"Unknown user: {u.id}")
|
|
|
|
|
self._logger.debug(__name__, f"Add user: {u.id}")
|
|
|
|
|
self._known_users.add_user(KnownUser(u.id))
|
|
|
|
|
self._db_context.save_changes()
|
|
|
|
|
|
|
|
|
|
user = self._known_users.find_user_by_discord_id(u.id)
|
|
|
|
|
if user is None:
|
|
|
|
|
self._logger.fatal(__name__, f'Cannot add user: {u.id}')
|
|
|
|
|
self._logger.fatal(__name__, f"Cannot add user: {u.id}")
|
|
|
|
|
|
|
|
|
|
self._logger.debug(__name__, f'Added user: {u.id}')
|
|
|
|
|
self._logger.debug(__name__, f"Added user: {u.id}")
|
|
|
|
|
except Exception as e:
|
|
|
|
|
self._logger.error(__name__, f'Cannot get user', e)
|
|
|
|
|
self._logger.error(__name__, f"Cannot get user", e)
|
|
|
|
|
|
|
|
|
|
def _check_servers(self):
|
|
|
|
|
self._logger.debug(__name__, f'Start checking Servers table')
|
|
|
|
|
self._logger.debug(__name__, f"Start checking Servers table")
|
|
|
|
|
for g in self._bot.guilds:
|
|
|
|
|
g: discord.Guild = g
|
|
|
|
|
try:
|
|
|
|
@@ -113,123 +126,157 @@ class DatabaseOnReadyEvent(OnReadyABC):
|
|
|
|
|
if server is not None:
|
|
|
|
|
continue
|
|
|
|
|
|
|
|
|
|
self._logger.warn(__name__, f'Server not found in database: {g.id}')
|
|
|
|
|
self._logger.debug(__name__, f'Add server: {g.id}')
|
|
|
|
|
self._logger.warn(__name__, f"Server not found in database: {g.id}")
|
|
|
|
|
self._logger.debug(__name__, f"Add server: {g.id}")
|
|
|
|
|
self._servers.add_server(Server(g.id))
|
|
|
|
|
self._db_context.save_changes()
|
|
|
|
|
|
|
|
|
|
server = self._servers.find_server_by_discord_id(g.id)
|
|
|
|
|
if server is None:
|
|
|
|
|
self._logger.fatal(__name__, f'Cannot add server: {g.id}')
|
|
|
|
|
self._logger.fatal(__name__, f"Cannot add server: {g.id}")
|
|
|
|
|
|
|
|
|
|
self._logger.debug(__name__, f'Added server: {g.id}')
|
|
|
|
|
self._logger.debug(__name__, f"Added server: {g.id}")
|
|
|
|
|
except Exception as e:
|
|
|
|
|
self._logger.error(__name__, f'Cannot get server', e)
|
|
|
|
|
self._logger.error(__name__, f"Cannot get server", e)
|
|
|
|
|
|
|
|
|
|
results = self._servers.get_servers()
|
|
|
|
|
if results is None or len(results) == 0:
|
|
|
|
|
self._logger.error(__name__, f'Table Servers is empty!')
|
|
|
|
|
self._logger.error(__name__, f"Table Servers is empty!")
|
|
|
|
|
|
|
|
|
|
def _check_clients(self):
|
|
|
|
|
self._logger.debug(__name__, f'Start checking Clients table')
|
|
|
|
|
self._logger.debug(__name__, f"Start checking Clients table")
|
|
|
|
|
for g in self._bot.guilds:
|
|
|
|
|
g: discord.Guild = g
|
|
|
|
|
try:
|
|
|
|
|
server: Server = self._servers.find_server_by_discord_id(g.id)
|
|
|
|
|
if server is None:
|
|
|
|
|
self._logger.fatal(__name__, f'Server not found in database: {g.id}')
|
|
|
|
|
self._logger.fatal(
|
|
|
|
|
__name__, f"Server not found in database: {g.id}"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
client = self._clients.find_client_by_server_id(server.server_id)
|
|
|
|
|
if client is not None:
|
|
|
|
|
continue
|
|
|
|
|
|
|
|
|
|
self._logger.warn(__name__, f'Client for server {g.id} not found in database: {self._bot.user.id}')
|
|
|
|
|
self._logger.debug(__name__, f'Add client: {self._bot.user.id}')
|
|
|
|
|
self._clients.add_client(Client(self._bot.user.id, 0, 0, 0, 0, 0, server))
|
|
|
|
|
self._logger.warn(
|
|
|
|
|
__name__,
|
|
|
|
|
f"Client for server {g.id} not found in database: {self._bot.user.id}",
|
|
|
|
|
)
|
|
|
|
|
self._logger.debug(__name__, f"Add client: {self._bot.user.id}")
|
|
|
|
|
self._clients.add_client(
|
|
|
|
|
Client(self._bot.user.id, 0, 0, 0, 0, 0, server)
|
|
|
|
|
)
|
|
|
|
|
self._db_context.save_changes()
|
|
|
|
|
|
|
|
|
|
client = self._clients.find_client_by_server_id(server.server_id)
|
|
|
|
|
if client is None:
|
|
|
|
|
self._logger.fatal(__name__, f'Cannot add client {self._bot.user.id} for server {g.id}')
|
|
|
|
|
self._logger.fatal(
|
|
|
|
|
__name__,
|
|
|
|
|
f"Cannot add client {self._bot.user.id} for server {g.id}",
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
self._logger.debug(__name__, f'Added client: {g.id}')
|
|
|
|
|
self._logger.debug(__name__, f"Added client: {g.id}")
|
|
|
|
|
except Exception as e:
|
|
|
|
|
self._logger.error(__name__, f'Cannot get client', e)
|
|
|
|
|
self._logger.error(__name__, f"Cannot get client", e)
|
|
|
|
|
|
|
|
|
|
results = self._servers.get_servers()
|
|
|
|
|
if results is None or len(results) == 0:
|
|
|
|
|
self._logger.error(__name__, f'Table Servers is empty!')
|
|
|
|
|
self._logger.error(__name__, f"Table Servers is empty!")
|
|
|
|
|
|
|
|
|
|
def _check_users(self):
|
|
|
|
|
self._logger.debug(__name__, f'Start checking Users table')
|
|
|
|
|
self._logger.debug(__name__, f"Start checking Users table")
|
|
|
|
|
for g in self._bot.guilds:
|
|
|
|
|
g: discord.Guild = g
|
|
|
|
|
|
|
|
|
|
try:
|
|
|
|
|
server = self._servers.find_server_by_discord_id(g.id)
|
|
|
|
|
if server is None:
|
|
|
|
|
self._logger.fatal(__name__, f'Server not found in database: {g.id}')
|
|
|
|
|
self._logger.fatal(
|
|
|
|
|
__name__, f"Server not found in database: {g.id}"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
for u in g.members:
|
|
|
|
|
u: Union[discord.Member, discord.User] = u
|
|
|
|
|
if u.bot:
|
|
|
|
|
self._logger.trace(__name__, f'User {u.id} is ignored, because its a bot')
|
|
|
|
|
self._logger.trace(
|
|
|
|
|
__name__, f"User {u.id} is ignored, because its a bot"
|
|
|
|
|
)
|
|
|
|
|
continue
|
|
|
|
|
|
|
|
|
|
user = self._users.find_user_by_discord_id_and_server_id(u.id, server.server_id)
|
|
|
|
|
user = self._users.find_user_by_discord_id_and_server_id(
|
|
|
|
|
u.id, server.server_id
|
|
|
|
|
)
|
|
|
|
|
if user is not None:
|
|
|
|
|
continue
|
|
|
|
|
|
|
|
|
|
self._logger.warn(__name__, f'User not found in database: {u.id}')
|
|
|
|
|
self._logger.debug(__name__, f'Add user: {u.id}')
|
|
|
|
|
self._logger.warn(__name__, f"User not found in database: {u.id}")
|
|
|
|
|
self._logger.debug(__name__, f"Add user: {u.id}")
|
|
|
|
|
self._users.add_user(User(u.id, 0, server))
|
|
|
|
|
self._db_context.save_changes()
|
|
|
|
|
|
|
|
|
|
self._logger.debug(__name__, f'Added User: {u.id}')
|
|
|
|
|
self._logger.debug(__name__, f"Added User: {u.id}")
|
|
|
|
|
except Exception as e:
|
|
|
|
|
self._logger.error(__name__, f'Cannot get User', e)
|
|
|
|
|
self._logger.error(__name__, f"Cannot get User", e)
|
|
|
|
|
|
|
|
|
|
results = self._users.get_users()
|
|
|
|
|
if results is None or len(results) == 0:
|
|
|
|
|
self._logger.error(__name__, f'Table Users is empty!')
|
|
|
|
|
self._logger.error(__name__, f"Table Users is empty!")
|
|
|
|
|
|
|
|
|
|
def _check_user_joins(self):
|
|
|
|
|
self._logger.debug(__name__, f'Start checking UserJoinedServers table')
|
|
|
|
|
self._logger.debug(__name__, f"Start checking UserJoinedServers table")
|
|
|
|
|
for guild in self._bot.guilds:
|
|
|
|
|
guild: discord.Guild = guild
|
|
|
|
|
|
|
|
|
|
server = self._servers.find_server_by_discord_id(guild.id)
|
|
|
|
|
if server is None:
|
|
|
|
|
self._logger.fatal(__name__, f'Server not found in database: {guild.id}')
|
|
|
|
|
self._logger.fatal(
|
|
|
|
|
__name__, f"Server not found in database: {guild.id}"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
try:
|
|
|
|
|
for u in guild.members:
|
|
|
|
|
u: discord.User = u
|
|
|
|
|
if u.bot:
|
|
|
|
|
self._logger.trace(__name__, f'User {u.id} is ignored, because its a bot')
|
|
|
|
|
self._logger.trace(
|
|
|
|
|
__name__, f"User {u.id} is ignored, because its a bot"
|
|
|
|
|
)
|
|
|
|
|
continue
|
|
|
|
|
|
|
|
|
|
user = self._users.find_user_by_discord_id_and_server_id(u.id, server.server_id)
|
|
|
|
|
user = self._users.find_user_by_discord_id_and_server_id(
|
|
|
|
|
u.id, server.server_id
|
|
|
|
|
)
|
|
|
|
|
if user is None:
|
|
|
|
|
self._logger.fatal(__name__, f'User not found in database: {u.id}')
|
|
|
|
|
self._logger.fatal(
|
|
|
|
|
__name__, f"User not found in database: {u.id}"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
join = self._user_joins.find_active_user_joined_server_by_user_id(user.user_id)
|
|
|
|
|
join = self._user_joins.find_active_user_joined_server_by_user_id(
|
|
|
|
|
user.user_id
|
|
|
|
|
)
|
|
|
|
|
if join is not None:
|
|
|
|
|
continue
|
|
|
|
|
|
|
|
|
|
m: discord.Member = u
|
|
|
|
|
self._logger.warn(__name__, f'Active UserJoinedServer not found in database: {guild.id}:{u.id}@{m.joined_at}')
|
|
|
|
|
self._logger.debug(__name__, f'Add UserJoinedServer: {guild.id}:{u.id}@{m.joined_at}')
|
|
|
|
|
self._user_joins.add_user_joined_server(UserJoinedServer(user, self._dtp.transform(m.joined_at), None))
|
|
|
|
|
self._logger.warn(
|
|
|
|
|
__name__,
|
|
|
|
|
f"Active UserJoinedServer not found in database: {guild.id}:{u.id}@{m.joined_at}",
|
|
|
|
|
)
|
|
|
|
|
self._logger.debug(
|
|
|
|
|
__name__,
|
|
|
|
|
f"Add UserJoinedServer: {guild.id}:{u.id}@{m.joined_at}",
|
|
|
|
|
)
|
|
|
|
|
self._user_joins.add_user_joined_server(
|
|
|
|
|
UserJoinedServer(user, self._dtp.transform(m.joined_at), None)
|
|
|
|
|
)
|
|
|
|
|
self._db_context.save_changes()
|
|
|
|
|
|
|
|
|
|
self._logger.debug(__name__, f'Added UserJoinedServer: {u.id}')
|
|
|
|
|
self._logger.debug(__name__, f"Added UserJoinedServer: {u.id}")
|
|
|
|
|
except Exception as e:
|
|
|
|
|
self._logger.error(__name__, f'Cannot get UserJoinedServer', e)
|
|
|
|
|
self._logger.error(__name__, f"Cannot get UserJoinedServer", e)
|
|
|
|
|
|
|
|
|
|
results = self._users.get_users()
|
|
|
|
|
if results is None or len(results) == 0:
|
|
|
|
|
self._logger.error(__name__, f'Table Users is empty!')
|
|
|
|
|
self._logger.error(__name__, f"Table Users is empty!")
|
|
|
|
|
|
|
|
|
|
joins = self._user_joins.get_user_joined_servers()
|
|
|
|
|
for join in joins:
|
|
|
|
@@ -242,42 +289,64 @@ class DatabaseOnReadyEvent(OnReadyABC):
|
|
|
|
|
|
|
|
|
|
dc_user = guild.get_member(join.user.discord_id)
|
|
|
|
|
if dc_user is None:
|
|
|
|
|
self._logger.warn(__name__, f'User {join.user.discord_id} already left the server.')
|
|
|
|
|
self._logger.warn(
|
|
|
|
|
__name__,
|
|
|
|
|
f"User {join.user.discord_id} already left the server.",
|
|
|
|
|
)
|
|
|
|
|
join.leaved_on = datetime.now()
|
|
|
|
|
self._user_joins.update_user_joined_server(join)
|
|
|
|
|
|
|
|
|
|
self._db_context.save_changes()
|
|
|
|
|
|
|
|
|
|
def _check_user_joins_vc(self):
|
|
|
|
|
self._logger.debug(__name__, f'Start checking UserJoinedVoiceChannel table')
|
|
|
|
|
self._logger.debug(__name__, f"Start checking UserJoinedVoiceChannel table")
|
|
|
|
|
for guild in self._bot.guilds:
|
|
|
|
|
guild: discord.Guild = guild
|
|
|
|
|
|
|
|
|
|
server = self._servers.find_server_by_discord_id(guild.id)
|
|
|
|
|
if server is None:
|
|
|
|
|
self._logger.fatal(__name__, f'Server not found in database: {guild.id}')
|
|
|
|
|
self._logger.fatal(
|
|
|
|
|
__name__, f"Server not found in database: {guild.id}"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
try:
|
|
|
|
|
for member in guild.members:
|
|
|
|
|
if member.bot:
|
|
|
|
|
self._logger.trace(__name__, f'User {member.id} is ignored, because its a bot')
|
|
|
|
|
self._logger.trace(
|
|
|
|
|
__name__, f"User {member.id} is ignored, because its a bot"
|
|
|
|
|
)
|
|
|
|
|
continue
|
|
|
|
|
|
|
|
|
|
user = self._users.find_user_by_discord_id_and_server_id(member.id, server.server_id)
|
|
|
|
|
user = self._users.find_user_by_discord_id_and_server_id(
|
|
|
|
|
member.id, server.server_id
|
|
|
|
|
)
|
|
|
|
|
if user is None:
|
|
|
|
|
self._logger.fatal(__name__, f'User not found in database: {member.id}')
|
|
|
|
|
self._logger.fatal(
|
|
|
|
|
__name__, f"User not found in database: {member.id}"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
joins = self._user_joins_vc.find_active_user_joined_voice_channels_by_user_id(user.user_id)
|
|
|
|
|
joins = self._user_joins_vc.find_active_user_joined_voice_channels_by_user_id(
|
|
|
|
|
user.user_id
|
|
|
|
|
)
|
|
|
|
|
if joins is None or len(joins) == 0:
|
|
|
|
|
continue
|
|
|
|
|
|
|
|
|
|
for join in joins:
|
|
|
|
|
self._logger.warn(__name__, f'Active UserJoinedVoiceChannel found in database: {guild.id}:{member.id}@{join.joined_on}')
|
|
|
|
|
self._logger.warn(
|
|
|
|
|
__name__,
|
|
|
|
|
f"Active UserJoinedVoiceChannel found in database: {guild.id}:{member.id}@{join.joined_on}",
|
|
|
|
|
)
|
|
|
|
|
join.leaved_on = datetime.now()
|
|
|
|
|
settings: BaseServerSettings = self._config.get_configuration(f'BaseServerSettings_{guild.id}')
|
|
|
|
|
settings: BaseServerSettings = self._config.get_configuration(
|
|
|
|
|
f"BaseServerSettings_{guild.id}"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
if ((join.leaved_on - join.joined_on).total_seconds() / 60 / 60) > settings.max_voice_state_hours:
|
|
|
|
|
join.leaved_on = join.joined_on + timedelta(hours=settings.max_voice_state_hours)
|
|
|
|
|
if (
|
|
|
|
|
(join.leaved_on - join.joined_on).total_seconds() / 60 / 60
|
|
|
|
|
) > settings.max_voice_state_hours:
|
|
|
|
|
join.leaved_on = join.joined_on + timedelta(
|
|
|
|
|
hours=settings.max_voice_state_hours
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
self._user_joins_vc.update_user_joined_voice_channel(join)
|
|
|
|
|
# todo: maybe add XP
|
|
|
|
@@ -285,26 +354,34 @@ class DatabaseOnReadyEvent(OnReadyABC):
|
|
|
|
|
|
|
|
|
|
for member in guild.members:
|
|
|
|
|
if member.bot:
|
|
|
|
|
self._logger.trace(__name__, f'User {member.id} is ignored, because its a bot')
|
|
|
|
|
self._logger.trace(
|
|
|
|
|
__name__, f"User {member.id} is ignored, because its a bot"
|
|
|
|
|
)
|
|
|
|
|
continue
|
|
|
|
|
|
|
|
|
|
if member.voice is None:
|
|
|
|
|
continue
|
|
|
|
|
|
|
|
|
|
user = self._users.find_user_by_discord_id_and_server_id(member.id, server.server_id)
|
|
|
|
|
user = self._users.find_user_by_discord_id_and_server_id(
|
|
|
|
|
member.id, server.server_id
|
|
|
|
|
)
|
|
|
|
|
if user is None:
|
|
|
|
|
self._logger.fatal(__name__, f'User not found in database: {member.id}')
|
|
|
|
|
self._logger.fatal(
|
|
|
|
|
__name__, f"User not found in database: {member.id}"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
join = UserJoinedVoiceChannel(user, member.voice.channel.id, datetime.now())
|
|
|
|
|
join = UserJoinedVoiceChannel(
|
|
|
|
|
user, member.voice.channel.id, datetime.now()
|
|
|
|
|
)
|
|
|
|
|
self._user_joins_vc.add_user_joined_voice_channel(join)
|
|
|
|
|
self._db_context.save_changes()
|
|
|
|
|
self._logger.warn(__name__, f'VS {member.voice}')
|
|
|
|
|
self._logger.warn(__name__, f"VS {member.voice}")
|
|
|
|
|
|
|
|
|
|
except Exception as e:
|
|
|
|
|
self._logger.error(__name__, f'Cannot get UserJoinedVoiceChannel', e)
|
|
|
|
|
self._logger.error(__name__, f"Cannot get UserJoinedVoiceChannel", e)
|
|
|
|
|
|
|
|
|
|
async def on_ready(self):
|
|
|
|
|
self._logger.debug(__name__, f'Module {type(self)} started')
|
|
|
|
|
self._logger.debug(__name__, f"Module {type(self)} started")
|
|
|
|
|
|
|
|
|
|
await self._seeder.seed()
|
|
|
|
|
|
|
|
|
@@ -316,4 +393,4 @@ class DatabaseOnReadyEvent(OnReadyABC):
|
|
|
|
|
self._check_user_joins_vc()
|
|
|
|
|
|
|
|
|
|
self._validate_init_time()
|
|
|
|
|
self._logger.trace(__name__, f'Module {type(self)} stopped')
|
|
|
|
|
self._logger.trace(__name__, f"Module {type(self)} stopped")
|
|
|
|
|