diff --git a/channels.csv b/channels.csv index 0856cbf..fd90fa2 100644 --- a/channels.csv +++ b/channels.csv @@ -36,4 +36,4 @@ path;message -
' + self.bot_data.config.config['Command admin'][x] + '
' - self.get_user_by_id(user_id).send_text_message(message) + self.get_user_by_session(session).send_text_message(message) case '!users': if is_admin: message = 'Список пользователей:
' users = self.bot_data.get_userlist() for user in users: message = message + '' + user['name'] + '
' - self.get_user_by_id(user_id).send_text_message(message) + self.get_user_by_session(session).send_text_message(message) case '!initchannels': - self.channel_service.init_channels() - message = 'Каналы обновлены' - self.get_user_by_id(user_id).send_text_message(message) + if is_admin: + self.channel_service.init_channels() + message = 'Каналы обновлены' + self.get_user_by_session(session).send_text_message(message) case 'test': - self.test(self.bot_data.bot, message_info) + self.test() case _: - self.get_user_by_id(user_id).send_text_message(message) + self.get_user_by_session(session).send_text_message(message) # TODO: одинаковые каналы (коллизия сообщений) def user_change_channel(self, user: User, action): _logger.info(f"{user['name']} перешёл в канал: {self.bot_data.bot.channels[action['channel_id']]['name']}") - message = self.channel_service.get_message_by_channel_id(action['channel_id']) if len(message) > 0: - self.get_user_by_id(user['user_id']).send_text_message(message) + self.get_user_by_session(user['session']).send_text_message(message) - def get_user_id_by_actor_id(self, actor_id: int) -> Optional[int]: + def user_connect_server(self, action): + user = self.get_user_by_session(action['session']) + + if user['name'] == self.bot_data.bot.user: + return + + _logger.info(f"{user['name']} зашёл на сервер") + + message = self.channel_service.get_welcome_message() + if len(message) > 0: + self.get_user_by_session(action['session']).send_text_message(message) + _logger.debug(f"{user['name']} ") + + def get_session_by_actor_id(self, actor_id: int) -> Optional[int]: user = self.get_user_by_actor_id(actor_id) if user is not None: - return user['user_id'] + return user['session'] else: return None @@ -78,24 +93,34 @@ class MumbleBotService: _logger.warning(f"Не удалось найти пользователя с actorId: {actor_id}") return None - def get_username_by_id(self, user_id: int) -> Optional[str]: + def get_username_by_session(self, session: int) -> Optional[str]: try: - return self.get_user_by_id(user_id)['name'] + return self.get_user_by_session(session)['name'] except KeyError: - _logger.warning(f"Не удалось найти пользователя с id: {user_id}") + _logger.warning(f"Не удалось найти пользователя с session: {session}") return None def get_user_by_id(self, user_id: int) -> Optional[User]: - try: - users = self.bot_data.bot.users - for user in users.values(): + users = self.bot_data.bot.users + for user in users.values(): + try: if user['user_id'] == user_id: return user - _logger.warning(f"Не удалось найти пользователя с id: {user_id}") - return None - except KeyError: - _logger.warning(f"Не удалось найти пользователя с id: {user_id}") - return None + except KeyError: + continue + _logger.warning(f"Не удалось найти пользователя с id: {user_id}") + return None + + def get_user_by_session(self, session: int) -> Optional[User]: + users = self.bot_data.bot.users + for user in users.values(): + try: + if user['session'] == session: + return user + except KeyError: + continue + _logger.warning(f"Не удалось найти пользователя с session: {session}") + return None def get_user_by_name(self, user_name: str) -> Optional[User]: users = self.bot_data.bot.users @@ -133,3 +158,4 @@ class MumbleBotService: def test(self): self.channel_service.get_tree() + diff --git a/src/start.py b/src/start.py index 0216d3a..031856e 100644 --- a/src/start.py +++ b/src/start.py @@ -23,11 +23,11 @@ coloredlogs.install(level='DEBUG', level_styles=level_styles, field_styles=field _logger = logging.getLogger(__name__) -_logger.debug("Это сообщение DEBUG уровня") -_logger.info("Это сообщение INFO уровня") -_logger.warning("Это сообщение WARNING уровня") -_logger.error("Это сообщение ERROR уровня") -_logger.critical("Это сообщение CRITICAL уровня") +# _logger.debug("Это сообщение DEBUG уровня") +# _logger.info("Это сообщение INFO уровня") +# _logger.warning("Это сообщение WARNING уровня") +# _logger.error("Это сообщение ERROR уровня") +# _logger.critical("Это сообщение CRITICAL уровня") bot = MumbleBot() bot.loop() diff --git a/welcome.csv b/welcome.csv new file mode 100644 index 0000000..cc3d127 --- /dev/null +++ b/welcome.csv @@ -0,0 +1 @@ +