149 lines
5.7 KiB
Python
149 lines
5.7 KiB
Python
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 = '<p>Пользователь ' + x + ' оставил сообщение:</p>' + '<p>' + \
|
|
userlist[mumble.users[user['session']]['name']][x] + '</p>'
|
|
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)
|