diff --git a/.gitignore b/.gitignore index b301c7e..097f6d9 100644 --- a/.gitignore +++ b/.gitignore @@ -11,3 +11,4 @@ test.py .idea/inspectionProfiles/profiles_settings.xml randomcolor.jpg .idea/.gitignore +ossworkspace.code-workspace diff --git a/README.md b/README.md index f2527a2..d4d70ed 100644 --- a/README.md +++ b/README.md @@ -29,6 +29,7 @@ owm = pyowm.OWM('OpenWeather_api_key', language='ru') # Ключ OpenWeather API * **!user_id *id*** — бот отправляет *id* нужного вам пользователя в vk api методом `users.get` и отправляет вам полученные этим методом данные: имя, фамилия, id, пол, время последнего онлайна и платформы, закрыт ли профиль * **!group_id *id*** — бот отправляет *id* нужного вам сообщества в vk api методом `groups.getById` и отправляет вам полученные этим методом данные: название, описание, id, количество подписчиков * **!image** — бот, с помощью костыля в виде сервисного ключа приложения, получает vk api методом `photos.get` фотографии альбома, выбирает с помощью функции в python `random.randrange` одну фотографию и отправляет вам её как attachment +* **!random *число1* *число2*** — бот генерирует с помощью `random.randint()` случайное число и отправляет его вам. Если без аргументов, то число от 0 до 10. Если есть одно число, то от 0 до *число1*. Если есть оба числа, то от *число1* до *число2* * **!weather *город*** — бот получает с помощью OpenWeather API текущую погоду в городе и отправляет её вам * **!wiki *запрос*** — бот получает с помощью Wikipedia API краткое описание статьи по запросу и отправляет её вам * **!byn** — бот получает с помощью НБ РБ API текущий курс белорусского рубля и отправляет её вам diff --git a/dan63047bot.py b/dan63047bot.py index 87f6900..969584b 100644 --- a/dan63047bot.py +++ b/dan63047bot.py @@ -109,10 +109,10 @@ class VkBot: self._OWNER = False self._COMMANDS = ["!image", "!my_id", "!h", "!user_id", "!group_id", "!help", "!weather", "!wiki", "!byn", - "!echo", "!game", "!debug", "!midnight", "!access", "!turnoff", "!reminder", "!subscribe"] + "!echo", "!game", "!debug", "!midnight", "!access", "!turnoff", "!reminder", "!subscribe", "!random"] def __str__(self): - return f"peer_id: {str(self._CHAT_ID)}, m: {str(self._MIDNIGHT_EVENT)}, await: {str(self._AWAITING_INPUT_MODE)}, tasks: {len(users[self._CHAT_ID]['tasks'])}" + return f"[BOT_{str(self._CHAT_ID)}] a: {str(self._ACCESS_LEVEL)}, mn: {str(self._MIDNIGHT_EVENT)}, await: {str(self._AWAITING_INPUT_MODE)}, tasks: {len(users[self._CHAT_ID]['tasks'])}, sub: {str(self._NEW_POST)}" def __del__(self): log(False, f"[BOT_{str(self._CHAT_ID)}] Bot-object has been deleted") @@ -314,6 +314,17 @@ class VkBot: log(False, f"[BOT_{self._CHAT_ID}] Subscribed on new posts") else: respond['text'] = errors_array["access"] + + elif message[0] == self._COMMANDS[17]: + try: + message[1] = message[1].split(' ', 1) + try: + respond['text'] = self.random_number(int(message[1][0]), int(message[1][1])) + except: + respond['text'] = self.random_number(0, int(message[1][0])) + except: + respond['text'] = self.random_number(0, 10) + if respond['text'] or respond['attachment']: self.send(respond['text'], respond['attachment']) @@ -563,6 +574,10 @@ class VkBot: log(True, err) return "Невозможно получить данные из НБ РБ: " + str(mda) + def random_number(self, lower, higher): + r = random.randint(lower, higher) + return f"Рандомное число от {lower} до {higher}:
{r}" + def change_await(self, awaiting=None): self._AWAITING_INPUT_MODE = awaiting try: @@ -643,8 +658,11 @@ def bots(): log(False, f"[NEW_POST] id{event.object.id}") for i in users: bot[int(i)].event("post", event.object) - else: - log(False, str(event)) + elif event.type == VkBotEventType.MESSAGE_DENY: + log(False, f"User {event.object.user_id} deny messages from that group") + del bot[int(event.object.user_id)] + del users[int(event.object.user_id)] + update_users_json(users) except Exception as kek: err = "Беды с ботом: " + str(kek) log(True, err) diff --git a/help.txt b/help.txt index 5735779..ea3a7f4 100644 --- a/help.txt +++ b/help.txt @@ -1,17 +1,33 @@ Я бот, призванный доставлять неудобства. Команды: + !my_id - сообщит ваш id в ВК + !user_id *id* - сообщит информацию о этом пользователе + !group_id *id* - сообщит информацию о этой группе + !image - отправляет рандомную картинку из альбома + !weather *город* - отправляет текущую погоду в городе (данные из OpenWeather API) + !wiki *запрос* - отправляет информацию об этом из Wikipedia + !byn - отправляет текущий курс валют, полученный из API НБ РБ + !echo - бот отправляет вам всё, что вы ему пишите + !game *камень/ножницы/бумага/статистика* - бот будет играть с вами в "Камень, ножницы, бумага" и записывать статистику + +!random *число1* *число2* - генерирует случайное число и отправляет его вам. Если без аргументов, то число от 0 до 10. Если есть одно число, то от 0 до *число1*. Если есть оба числа, то от *число1* до *число2* + !midnight - бот будет уведомлять вас о 00:00 по Москве. Отправьте ещё раз, чтобы бот больше вас не уведомлял + !reminder *set/list/delete* - напоминалка. set устанавливает напоминание, delete удаляет, list выдаёт список ваших напоминаний + !subscribe - бот будет уведомлять вас новых постах в группе. Отправьте ещё раз, чтобы бот больше вас не уведомлял + !h, !help - справка -Дата последнего обновления: 25.05.2020 (Эта справка вынесена в txt файл) + +Дата последнего обновления: 27.05.2020 (!random) Проект бота на GitHub: https://github.com/dan63047/dan63047pythonbot