@ddosni4ek

Не отвечает вк бот python. как решить?

Написал бота vk query. сам бот запустился, но не отвечает на команды. ошибок в консоли не выходит. как решить?
API 5.80
from vk_api.longpoll import VkLongPoll, VkEventType
from vk_api.bot_longpoll import VkBotLongPoll, VkBotEventType
import vk_api
import yaml
import requests
import json

token = "мой токен"
group_id = айди группы
vk_session = vk_api.VkApi(token=token)
longpoll = VkBotLongPoll(vk_session, group_id)
vk = vk_session.get_api()
for event in longpoll.listen():
  try:
    if event.type == VkBotEventType.MESSAGE_NEW:
      message = event.obj.message
      peer_id = message["peer_id"]
      text = message["text"].lower()
      args = text.split()
      cmd = args.pop(0)
      if cmd in ["/mcpe", "/query", "/сервер"]:
          try:
            args[0]
          except:
            vk.messages.send(peer_id = peer_id, random_id = 0, message = f"Введите {cmd} <айпи> <порт>")
            continue
          try:
            port = args[1]
          except:
            port = 19132
          request = json.loads(requests.get(f"https://api.mcsrvstat.us/2/{args[0]}:{port}").text)
          if not request['online']:
              vk.messages.send(peer_id = peer_id, random_id = 0, message = "Сервер выключен либо отключён показ данных сервера")
          else:
            message = f" IP сервера: {request['ip']}:{request['port']}\n"
            try: message += f" MOTD: {request['motd']['clean'][0]}\n"
            except: message += " MOTD: скрыто\n"
            try: message += f" Версия: {request['version']}\n"
            except: message += " Версия: скрыто"
            try: message += f"⚄1¤7 Ядро: {request['sowtware']}\n"
            except: message += "⚄1¤7 Ядро: скрыто\n"
            try: message += f" Карта: {request['map']}\n"
            except: message += " Карта: скрыто\n"
            try: message += f" Онлайн: {request['players']['online']}/{request['players']['max']}\n"
            except: message += " Онлайн: скрыто\n"
            try: message += f" Игроки: {', '.join(request['players']['list'])}\n\n\n"
            except: message += " Игроки: скрыто\n\n\n"
            try: message += f" Плагины: {', '.join(request['plugins']['names'])}\n"
            except: message += " Плагины: отключено"
            vk.messages.send(peer_id = peer_id, random_id = 0, message = message)

      if cmd == "/help":
        vk.messages.send(peer_id = peer_id, random_id = 0, message = f"Помощь по Query\n/query, /сервер, /mcpe")
  except: pass
  • Вопрос задан
  • 103 просмотра
Решения вопроса 1
WolfInChains
@WolfInChains
Насколько мне известно в версии API 5.80 еще нет
event.obj.message["text"], объект message вроде как появился в более поздних версиях. Запринтите event.object и посмотрите что он возвращает.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
lxstvayne
@lxstvayne
Новичок, люблю python
У вас слишком много логики внутри цикла. Попробуйте отладить вашу программу. Раннее написали про объект message, он появился начиная с версии 5.80. Также если вы пишете бота сообщества, рекомендую посмотреть на библиотеку vk_maria (https://github.com/lxstvayne/vk_maria), написанную мной. С помощью неё можно ваш код сделать намного чище и понятнее.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы