import pymumble_py3 import time import os import shutil import configparser from pymumble_py3.callbacks import PYMUMBLE_CLBK_TEXTMESSAGERECEIVED as PCTMR from pymumble_py3.callbacks import PYMUMBLE_CLBK_USERUPDATED as PCUU from pymumble_py3.callbacks import PYMUMBLE_CLBK_USERCREATED as PCUC kostyl1 = 0 # функция создаёт папки, в которых содержатся сообщения для тех, кто зашёл на канал def create_folder_tree(): path = config['Bot']['data_folder'] + "/" try: os.mkdir(path) except OSError: print("Создать директорию %s не удалось" % path) else: print("Успешно создана директория %s " % path) path2 = path + 'welcomemessage.txt' try: f = open(path2, 'tw', encoding='utf-8') f.close() except OSError: print("Создать файл %s не удалось" % path2) else: print("Успешно создан файл %s " % path2) path2 = path + 'firstwelcomemessage.txt' try: f = open(path2, 'tw', encoding='utf-8') f.close() except OSError: print("Создать файл %s не удалось" % path2) else: print("Успешно создан файл %s " % path2) for x in mumble.channels: # определим имя директории, которую создаём path3 = path + str(x) + '.' + mumble.channels[x]['name'] try: os.mkdir(path3) except OSError: print("Создать директорию %s не удалось" % path3) else: print("Успешно создана директория %s " % path3) path4 = path + str(x) + '.' + mumble.channels[x]['name'] + '/tm_' + mumble.channels[x]['name'] + '.txt' try: f = open(path4, 'tw', encoding='utf-8') f.close() except OSError: print("Создать файл %s не удалось" % path4) else: print("Успешно создан файл %s " % path4) # функция удаляет папки def delete_folder_tree(): path = config['Bot']['data_folder'] + "/" try: shutil.rmtree(path) except OSError: print("Удалить директорию %s не удалось" % path) else: print("Успешно удалена директория %s" % path) path = "bot_data/" try: os.mkdir(path) except OSError: print("Создать директорию %s не удалось" % path) else: print("Успешно создана директория %s " % path) # функция отправляет сообщение пользователю, зашедшему на канал def send_message_to_user(channel_id, actor): path = config['Bot']['data_folder'] + "/" + str(channel_id) + '.' + mumble.channels[channel_id]['name'] + '/tm_' + \ mumble.channels[channel_id]['name'] + '.txt' try: f = open(path, 'r', encoding="utf-8") text = f.read() mumble.users[actor].send_text_message(text) f.close() except OSError: print('Сообщение не отправлено') else: print('Сообщение отправлено ' + mumble.users[actor]['name'] + ':' + text) # функция отправляет сообщение пользователю, зашедшему на сервер def welcome_message(user): path = config['Bot']['data_folder'] + '/welcomemessage.txt' try: f = open(path, 'r', encoding="utf-8") text = f.read() mumble.users[user['session']].send_text_message(text) f.close() except OSError: print('Приветствие не отправлено') else: print('Приветствие отправлено ' + mumble.users[user['session']]['name'] + ':' + text) # функция отправляет сообщение пользователю, зашедшему на сервер впервые def first_welcome_message(user): path = config['Bot']['data_folder'] + '/firstwelcomemessage.txt' try: f = open(path, 'r', encoding="utf-8") text = f.read() mumble.users[user['session']].send_text_message(text) f.close() except OSError: print('Приветствие не отправлено') else: print('Приветствие отправлено ' + mumble.users[user['session']]['name'] + ':' + text) # пользователь "проверяет" свой почтовый ящик def check_offline_messages(user): for x in userlist[mumble.users[user['session']]['name']]: if userlist[mumble.users[user['session']]['name']][x] != '': text = '

Пользователь ' + x + ' оставил сообщение:

' + '

' + \ userlist[mumble.users[user['session']]['name']][x] + '

' mumble.users[user['session']].send_text_message(text) userlist.set(mumble.users[user['session']]['name'], x, '') with open(config['Bot']['userlist'], "w") as config_file: userlist.write(config_file) print('Оффлайн сообщение отправлено ' + mumble.users[user['session']]['name'] + ':' + text) # говорим как подключиться боту к серверу # к колбэкам прикручиваем функции-обработчики # подключаем бота к серверу mumble.start() # костыль time.sleep(5) print('костыль функционирует') kostyl1 = 1 # циклим всё, чтобы бот не отключался while 1: time.sleep(1)