MumbleConciergeBot/start_bot.py

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)