From 8eefc5edfeff8e4c3521ef65f5f0d7d8d4d02d48 Mon Sep 17 00:00:00 2001 From: dan63047 Date: Fri, 22 May 2020 23:12:05 +0300 Subject: [PATCH] !turnoff fix, more clear logging --- README.md | 3 ++- dan63047bot.py | 21 +++++++++++++++------ 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 03c8a58..c319d89 100644 --- a/README.md +++ b/README.md @@ -35,11 +35,12 @@ owm = pyowm.OWM('OpenWeather_api_key', language='ru') # Ключ OpenWeather API * **!echo** — бот начинает повторять за вами, чтобы это остановить, надо написать *!echo off* * **!game *камень/ножницы/бумага/статистика*** — бот играет с вами в "Камень, ножницы, бумага" и ведет статискику игр, которую записывает в файл json * **!midnight** — бот будет уведомлять о каждом миднайте по Московскому времени. Введите ещё раз, чтобы отменить это +* **!reminder *set/list/delete*** — напоминалка. С агрументом *set* бот запускает установку напоминания, с аргументом *list* отправляет вам все ваши запланированные напоминания, с аргументом *delete* запускает удаление напоминания * **!debug** — бот отправляет информацию о своём состоянии * **!debug *log*** — бот отправляет последние 10 строк из своего лога. Доступно только вам * **!debug *bots*** — бот отправляет информацию о обьектах бота в памяти. Доступно только вам * **!access *all/owner*** — позволяет в беседе установить уровень доступа к командам *!midnight* и *!debug*. *all* - все могут пользоваться. *owner* - только вы. Доступно только вам -* **!reminder *set/list/delete*** — напоминалка. С агрументом *set* бот запускает установку напоминания, с аргументом *list* отправляет вам все ваши запланированные напоминания, с аргументом *delete* запускает удаление напоминания +* **!turnoff** — даёт боту команду на выключение. Доступно только вам # Использованные библиотеки diff --git a/dan63047bot.py b/dan63047bot.py index ad14ea4..c9ea4c3 100644 --- a/dan63047bot.py +++ b/dan63047bot.py @@ -359,7 +359,7 @@ class VkBot: else: respond = 'Установленные напоминания:
' for i in users[self._CHAT_ID]['tasks']: - datetime_time = datetime.datetime.fromtimestamp(int(i)+10800) + datetime_time = datetime.datetime.fromtimestamp(int(i)) respond += f"
{datetime_time.strftime('%d.%m.%y %H:%M')} - {users[self._CHAT_ID]['tasks'][i]}" return respond elif stage == "delete": @@ -576,7 +576,13 @@ def bots(): for event in MyVkLongPoll.listen(longpoll): try: if event.type == VkBotEventType.MESSAGE_NEW: - log(False, f'Новое сообщение: {event.message}') + if event.message.attachments: + atch = '' + for i in event.message.attachments: + atch += i['type'] + str(i[i['type']]['owner_id']) + "_" + str(i[i['type']]['id']) + " " + else: + atch = "nothing" + log(False, f'Новое сообщение: peer_id: {event.message.peer_id}, user_id: {event.message.from_id}, text: {event.message.text}, attachments: {atch}') debug_array['messages_get'] += 1 if int(event.message.peer_id) in bot: bot[event.message.peer_id].get_message(event.message.text, event.message.from_id) @@ -585,6 +591,10 @@ def bots(): users[event.message.peer_id] = {"midnight": False, "tasks": {}, "await": None, "access": 1} update_users_json(users) bot[event.message.peer_id].get_message(event.message.text, event.message.from_id) + elif event.type == VkBotEventType.WALL_POST_NEW: + log(False, f"На стене группы опубликован новый пост id{event.object.id}: {event.object.text}") + else: + log(False, str(event)) except Exception as kek: err = "Беды с ботом: " + str(kek) log(True, err) @@ -619,15 +629,14 @@ def check_tasks(): continue except RuntimeError: continue - time.sleep(0.3) - + time.sleep(0.3) log(False, "Скрипт запущен, чтение users.json для восстановления обьектов ботов") load_users() tread_bots = threading.Thread(target=bots) -tread_midnight = threading.Thread(target=midnight) -tread_tasks = threading.Thread(target=check_tasks) +tread_midnight = threading.Thread(target=midnight, daemon=True) +tread_tasks = threading.Thread(target=check_tasks, daemon=True) tread_bots.start() tread_midnight.start() tread_tasks.start()