53 lines
2.5 KiB
Python
53 lines
2.5 KiB
Python
import logging
|
||
|
||
from src.model import MumbleBot
|
||
from src.service.MumbleBotService import MumbleBotService
|
||
|
||
_logger = logging.getLogger(__name__)
|
||
|
||
|
||
class MumbleController:
|
||
@staticmethod
|
||
def message_received(bot_info: MumbleBot, message_info):
|
||
user_id = message_info.actor
|
||
if user_id == 0:
|
||
return
|
||
|
||
username = bot_info.get_username_by_id(user_id)
|
||
is_admin = bot_info.is_admin(username)
|
||
message = message_info.message.strip()
|
||
|
||
print(f"{username} {('', '(админ бота)')[is_admin]} прислал сообщение: {message}")
|
||
_logger.info(f"{username} {('', '(админ бота)')[is_admin]} прислал сообщение: {message}")
|
||
|
||
match message:
|
||
case '!help':
|
||
message = ' '
|
||
for x in bot_info.config.config['Command user']:
|
||
message = message + '<p>' + bot_info.config.config['Command user'][x] + '</p>'
|
||
if is_admin:
|
||
for x in bot_info.config.config['Command admin']:
|
||
message = message + '<p>' + bot_info.config.config['Command admin'][x] + '</p>'
|
||
bot_info.get_user_by_id(user_id).send_text_message(message)
|
||
case '!users':
|
||
if is_admin:
|
||
message = '<p>Список пользователей:</p>'
|
||
users = bot_info.get_userlist()
|
||
for user in users:
|
||
message = message + '<p>' + user['name'] + '</p>'
|
||
bot_info.get_user_by_id(user_id).send_text_message(message)
|
||
case '!initchannels':
|
||
MumbleBotService.init_channels(bot_info)
|
||
message = 'Каналы обновлены'
|
||
bot_info.get_user_by_id(user_id).send_text_message(message)
|
||
case 'test':
|
||
print('тестовая команда')
|
||
MumbleBotService.test(bot_info.bot, message_info)
|
||
case _:
|
||
bot_info.get_user_by_id(user_id).send_text_message(message)
|
||
|
||
@staticmethod
|
||
def user_change_channel(bot_info: MumbleBot, user, action):
|
||
if 'channel_id' in user: # колбэк вызывается также включением/выключением микрофона у пользователя, тут стоит фильтр "Только переходы по каналам"
|
||
MumbleBotService.user_change_channel(bot_info, user, action)
|