!debug update
This commit is contained in:
parent
738337b673
commit
31bd60f814
|
@ -14,13 +14,15 @@
|
||||||
* **!wiki *запрос*** — бот получает с помощью Wikipedia API краткое описание статьи по запросу и отправляет её вам
|
* **!wiki *запрос*** — бот получает с помощью Wikipedia API краткое описание статьи по запросу и отправляет её вам
|
||||||
* **!byn** — бот получает с помощью НБ РБ API текущий курс белорусского рубля и отправляет её вам
|
* **!byn** — бот получает с помощью НБ РБ API текущий курс белорусского рубля и отправляет её вам
|
||||||
* **!echo** — бот начинает повторять за вами, чтобы это остановить, надо написать *!echo off*
|
* **!echo** — бот начинает повторять за вами, чтобы это остановить, надо написать *!echo off*
|
||||||
* **!game *камень/ножницы/бумага/статистика*** — бот играет с вами в "Камень, ножницы, бумага" и ведет статискику игр, которую записывает в файл json
|
* **!game *камень/ножницы/бумага/статистика*** — бот играет с вами в "Камень, ножницы, бумага" и ведет статискику игр, которую записывает в файл БД
|
||||||
* **!midnight** — бот будет уведомлять о каждом миднайте по Московскому времени. Введите ещё раз, чтобы отменить это
|
* **!midnight** — бот будет уведомлять о каждом миднайте по Московскому времени. Введите ещё раз, чтобы отменить это
|
||||||
* **!reminder *set/list/delete*** — напоминалка. С агрументом *set* бот запускает установку напоминания, с аргументом *list* отправляет вам все ваши запланированные напоминания, с аргументом *delete* запускает удаление напоминания
|
* **!reminder *set/list/delete*** — напоминалка. С агрументом *set* бот запускает установку напоминания, с аргументом *list* отправляет вам все ваши запланированные напоминания, с аргументом *delete* запускает удаление напоминания
|
||||||
* **!subscribe** — бот будет уведомлять вас о каждом новом посте. Введите ещё раз, чтобы отменить это
|
* **!subscribe** — бот будет уведомлять вас о каждом новом посте. Введите ещё раз, чтобы отменить это
|
||||||
* **!debug** — бот отправляет информацию о своём состоянии
|
* **!debug** — бот отправляет информацию о своём состоянии
|
||||||
* **!debug *log*** — бот отправляет последние 10 строк из своего лога. Доступно только вам
|
* **!debug *log*** — бот отправляет последние 10 строк из своего лога. Доступно только вам
|
||||||
* **!debug *bots*** — бот отправляет информацию о обьектах бота в памяти. Доступно только вам
|
* **!debug *bots*** — бот отправляет информацию о обьектах бота в памяти. Доступно только вам
|
||||||
|
* **!debug *game*** — бот отправляет всю статистику по игре !game
|
||||||
|
* **!debug *tasks*** — бот отправляет вам все напоминания из !reminder. Доступно только вам
|
||||||
* **!access *all/owner*** — позволяет в беседе установить уровень доступа к командам *!midnight*, *!subscribe* и *!debug*. *all* - все могут пользоваться. *owner* - только вы. Доступно только вам
|
* **!access *all/owner*** — позволяет в беседе установить уровень доступа к командам *!midnight*, *!subscribe* и *!debug*. *all* - все могут пользоваться. *owner* - только вы. Доступно только вам
|
||||||
* **!turnoff** — даёт боту команду на выключение. Доступно только вам
|
* **!turnoff** — даёт боту команду на выключение. Доступно только вам
|
||||||
* **!admin_mode** — если чат, в которой активируется команда, является беседой и в ней у бота есть полномочия администратора, то бот переходит в режим модерации. Пока что он может только кикать людей за @all и @online. Введите ещё раз, чтобы выключить режим модерации. Доступно только вам
|
* **!admin_mode** — если чат, в которой активируется команда, является беседой и в ней у бота есть полномочия администратора, то бот переходит в режим модерации. Пока что он может только кикать людей за @all и @online. Введите ещё раз, чтобы выключить режим модерации. Доступно только вам
|
||||||
|
|
|
@ -37,7 +37,7 @@ def log(warning, text):
|
||||||
log(False, "Script started")
|
log(False, "Script started")
|
||||||
|
|
||||||
bot = {}
|
bot = {}
|
||||||
debug_array = {'vk_warnings': 0, 'logger_warnings': 0, 'start_time': 0, 'messages_get': 0, 'messages_answered': 0}
|
debug_array = {'vk_warnings': 0, 'db_warnings': 0, 'bot_warnings': 0, 'logger_warnings': 0, 'start_time': 0, 'messages_get': 0, 'messages_answered': 0}
|
||||||
errors_array = {"access": "Отказано в доступе", "miss_argument": "Отсуствует аргумент"}
|
errors_array = {"access": "Отказано в доступе", "miss_argument": "Отсуствует аргумент"}
|
||||||
|
|
||||||
longpoll = VkBotLongPoll(vk, group_id)
|
longpoll = VkBotLongPoll(vk, group_id)
|
||||||
|
@ -66,6 +66,7 @@ class MySQL_worker():
|
||||||
cur.close()
|
cur.close()
|
||||||
log(False, f"Database connection established")
|
log(False, f"Database connection established")
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
|
debug_array['db_warnings'] += 1
|
||||||
log(True, f"Unable to connect to database: {str(e)}")
|
log(True, f"Unable to connect to database: {str(e)}")
|
||||||
|
|
||||||
def set_new_user(self, peer_id, midnight=False, awaiting=None, access=1, new_post=False, admin_mode=False, game_wins=0, game_defeats=0, game_draws=0):
|
def set_new_user(self, peer_id, midnight=False, awaiting=None, access=1, new_post=False, admin_mode=False, game_wins=0, game_defeats=0, game_draws=0):
|
||||||
|
@ -75,6 +76,7 @@ class MySQL_worker():
|
||||||
self._CON.commit()
|
self._CON.commit()
|
||||||
cur.close()
|
cur.close()
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
|
debug_array['db_warnings'] += 1
|
||||||
log(True, f"Unable to add new user in database: {str(e)}")
|
log(True, f"Unable to add new user in database: {str(e)}")
|
||||||
|
|
||||||
def get_all_users(self):
|
def get_all_users(self):
|
||||||
|
@ -85,6 +87,7 @@ class MySQL_worker():
|
||||||
cur.close()
|
cur.close()
|
||||||
return result
|
return result
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
|
debug_array['db_warnings'] += 1
|
||||||
log(True, f"Unable to load user from database: {str(e)}")
|
log(True, f"Unable to load user from database: {str(e)}")
|
||||||
|
|
||||||
def get_from_users(self, from_id):
|
def get_from_users(self, from_id):
|
||||||
|
@ -95,8 +98,20 @@ class MySQL_worker():
|
||||||
cur.close()
|
cur.close()
|
||||||
return result
|
return result
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
|
debug_array['db_warnings'] += 1
|
||||||
log(True, f"Unable to load user from database: {str(e)}")
|
log(True, f"Unable to load user from database: {str(e)}")
|
||||||
|
|
||||||
|
def get_game_stat(self):
|
||||||
|
try:
|
||||||
|
cur = self._CON.cursor()
|
||||||
|
cur.execute("SELECT chat_id, game_wins, game_draws, game_defeats FROM bot_users WHERE game_wins > 0 OR game_draws > 0 OR game_defeats > 0")
|
||||||
|
result = cur.fetchall()
|
||||||
|
cur.close()
|
||||||
|
return result
|
||||||
|
except Exception as e:
|
||||||
|
debug_array['db_warnings'] += 1
|
||||||
|
log(True, f"Unable to load stats from database: {str(e)}")
|
||||||
|
|
||||||
def update_user(self, chat_id, thing, new_value):
|
def update_user(self, chat_id, thing, new_value):
|
||||||
try:
|
try:
|
||||||
cur = self._CON.cursor()
|
cur = self._CON.cursor()
|
||||||
|
@ -104,16 +119,18 @@ class MySQL_worker():
|
||||||
self._CON.commit()
|
self._CON.commit()
|
||||||
cur.close()
|
cur.close()
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
|
debug_array['db_warnings'] += 1
|
||||||
log(True, f"Unable to update info about user in database: {str(e)}")
|
log(True, f"Unable to update info about user in database: {str(e)}")
|
||||||
|
|
||||||
def delete_user(self, chat_id):
|
def delete_user(self, chat_id):
|
||||||
try:
|
try:
|
||||||
cur = self._CON.cursor()
|
cur = self._CON.cursor()
|
||||||
cur.execute("DELETE FROM bot_users WHERE chat_id = %s", (chat_id))
|
cur.execute("DELETE FROM bot_users, game_defeats WHERE chat_id = %s", (chat_id))
|
||||||
self._CON.commit()
|
self._CON.commit()
|
||||||
cur.close()
|
cur.close()
|
||||||
return True
|
return True
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
|
debug_array['db_warnings'] += 1
|
||||||
log(True, f"Unable to delete user from database: {str(e)}")
|
log(True, f"Unable to delete user from database: {str(e)}")
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
@ -125,6 +142,7 @@ class MySQL_worker():
|
||||||
cur.close()
|
cur.close()
|
||||||
return result
|
return result
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
|
debug_array['db_warnings'] += 1
|
||||||
log(True, f"Unable to load tasks from database: {str(e)}")
|
log(True, f"Unable to load tasks from database: {str(e)}")
|
||||||
|
|
||||||
def set_new_task(self, chat_id, time, task):
|
def set_new_task(self, chat_id, time, task):
|
||||||
|
@ -134,6 +152,7 @@ class MySQL_worker():
|
||||||
self._CON.commit()
|
self._CON.commit()
|
||||||
cur.close()
|
cur.close()
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
|
debug_array['db_warnings'] += 1
|
||||||
log(True, f"Unable to add new task in database: {str(e)}")
|
log(True, f"Unable to add new task in database: {str(e)}")
|
||||||
|
|
||||||
def get_from_tasks(self, from_id):
|
def get_from_tasks(self, from_id):
|
||||||
|
@ -144,6 +163,7 @@ class MySQL_worker():
|
||||||
cur.close()
|
cur.close()
|
||||||
return result
|
return result
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
|
debug_array['db_warnings'] += 1
|
||||||
log(True, f"Unable to load tasks from database: {str(e)}")
|
log(True, f"Unable to load tasks from database: {str(e)}")
|
||||||
|
|
||||||
def delete_task(self, from_id, task):
|
def delete_task(self, from_id, task):
|
||||||
|
@ -154,6 +174,7 @@ class MySQL_worker():
|
||||||
cur.close()
|
cur.close()
|
||||||
return True
|
return True
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
|
debug_array['db_warnings'] += 1
|
||||||
log(True, f"Unable to delete task from database: {str(e)}")
|
log(True, f"Unable to delete task from database: {str(e)}")
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
@ -166,6 +187,7 @@ def load_users():
|
||||||
for i in get_info:
|
for i in get_info:
|
||||||
bot[int(i['chat_id'])] = VkBot(i['chat_id'], i['midnight'], i['awaiting'], int(i['access']), i['new_post'], i['admin_mode'])
|
bot[int(i['chat_id'])] = VkBot(i['chat_id'], i['midnight'], i['awaiting'], int(i['access']), i['new_post'], i['admin_mode'])
|
||||||
except Exception as lol:
|
except Exception as lol:
|
||||||
|
debug_array['bot_warnings'] += 1
|
||||||
log(True, f"Problem with creating objects: {str(lol)}")
|
log(True, f"Problem with creating objects: {str(lol)}")
|
||||||
|
|
||||||
|
|
||||||
|
@ -468,6 +490,29 @@ class VkBot:
|
||||||
return answer
|
return answer
|
||||||
else:
|
else:
|
||||||
return errors_array["access"]
|
return errors_array["access"]
|
||||||
|
elif arg == "game":
|
||||||
|
stats = db.get_game_stat()
|
||||||
|
if len(stats) > 0:
|
||||||
|
answer = "Статистика игроков в !game"
|
||||||
|
for i in stats:
|
||||||
|
try:
|
||||||
|
winrate = (i['game_wins']/(i['game_wins']+i['game_defeats']+i['game_draws'])) * 100
|
||||||
|
except ZeroDivisionError:
|
||||||
|
winrate = 0
|
||||||
|
answer += f"<br> @id{i['chat_id']} - Сыграл раз: {i['game_wins']+i['game_defeats']+i['game_draws']}, Победы/Ничьи/Поражения: {i['game_wins']}/{i['game_defeats']}/{i['game_draws']}, {toFixed(winrate, 2)}% побед"
|
||||||
|
else:
|
||||||
|
answer = "Никто не пользуется !game"
|
||||||
|
return answer
|
||||||
|
elif arg == "tasks":
|
||||||
|
if self._OWNER:
|
||||||
|
tasks = db.get_all_tasks()
|
||||||
|
if len(tasks) > 0:
|
||||||
|
answer = "Напоминания в !reminder"
|
||||||
|
for i in tasks:
|
||||||
|
answer += f"<br>id{i['chat_id']} - {i['time']}: {i['task']}"
|
||||||
|
else:
|
||||||
|
answer = "Никто не пользуется !reminder"
|
||||||
|
return answer
|
||||||
else:
|
else:
|
||||||
up_time = time.time() - debug_array['start_time']
|
up_time = time.time() - debug_array['start_time']
|
||||||
time_d = int(up_time) / (3600 * 24)
|
time_d = int(up_time) / (3600 * 24)
|
||||||
|
@ -477,9 +522,13 @@ class VkBot:
|
||||||
str_up_time = '%01d:%02d:%02d:%02d' % (time_d, time_h, time_min, time_sec)
|
str_up_time = '%01d:%02d:%02d:%02d' % (time_d, time_h, time_min, time_sec)
|
||||||
datetime_time = datetime.datetime.fromtimestamp(debug_array['start_time'])
|
datetime_time = datetime.datetime.fromtimestamp(debug_array['start_time'])
|
||||||
answer = "UPTIME: " + str_up_time + "<br>Прослушано сообщений: " + str(
|
answer = "UPTIME: " + str_up_time + "<br>Прослушано сообщений: " + str(
|
||||||
debug_array['messages_get']) + " (Отправлено " + str(
|
debug_array['messages_get']) + "<br>Отправлено сообщений:" + str(
|
||||||
debug_array['messages_answered']) + ")<br>Ошибок в работе: " + str(
|
debug_array['messages_answered']) + "<br>Ошибок в работе: " + str(
|
||||||
debug_array['logger_warnings']) + " (Из них беды с ВК: " + str(debug_array['vk_warnings']) + ")<br>Обьектов бота: " + str(len(bot)) + "<br>Запуск бота по часам сервера: " + datetime_time.strftime('%d.%m.%Y %H:%M:%S UTC')
|
debug_array['logger_warnings']) + ", из них:<br> •Беды с ВК: " + str(
|
||||||
|
debug_array['vk_warnings']) + "<br> •Беды с БД: " + str(
|
||||||
|
debug_array['db_warnings']) + "<br> •Беды с ботом: " + str(
|
||||||
|
debug_array['bot_warnings']) + "<br>Обьектов бота: " + str(
|
||||||
|
len(bot)) + "<br>Запуск бота по часам сервера: " + datetime_time.strftime('%d.%m.%Y %H:%M:%S UTC')
|
||||||
return answer
|
return answer
|
||||||
|
|
||||||
def reminder(self, string, stage):
|
def reminder(self, string, stage):
|
||||||
|
@ -742,8 +791,8 @@ def bots():
|
||||||
else:
|
else:
|
||||||
log(False, f"Event {str(event.type)} happend")
|
log(False, f"Event {str(event.type)} happend")
|
||||||
except Exception as kek:
|
except Exception as kek:
|
||||||
err = "Беды с ботом: " + str(kek)
|
log(True, f"Беды с ботом: {str(kek)}")
|
||||||
log(True, err)
|
debug_array['bot_warnings'] += 1
|
||||||
continue
|
continue
|
||||||
|
|
||||||
def midnight():
|
def midnight():
|
||||||
|
|
2
help.txt
2
help.txt
|
@ -29,5 +29,5 @@
|
||||||
|
|
||||||
!h, !help - справка
|
!h, !help - справка
|
||||||
|
|
||||||
Дата последнего обновления: 07.05.2020 (Данные бота теперь хранятся в базе данных)
|
Дата последнего обновления: 09.06.2020 (!debug update)
|
||||||
Проект бота на GitHub: https://github.com/dan63047/dan63047pythonbot
|
Проект бота на GitHub: https://github.com/dan63047/dan63047pythonbot
|
||||||
|
|
Loading…
Reference in New Issue