Написал небольшой скрипт телеграмм бота, собственно вот он:
import telegram
from telegram.ext import Updater, MessageHandler, CommandHandler, MessageFilters
import dns.resolver
#токен от @BotFather
TOKEN = 'my_token'
def start(update, context):
context.bot.send_message(chat_id=update.effective_chat.id,
text='Привет! Я бот, который может дать информацию о домене. Просто отправь мне сообщение со списком доменов.')
def domain_info(update, context):
domains = update.message.text.split('\n')
for domain in domains:
try:
# получаем IP-адрес сайта
ip = dns.resolver.resolve(domain, 'A')[0].address
# получаем NS-записи сайта
ns = dns.resolver.resolve(domain, 'NS')[0].to_text()
# получаем A-записи сайта
a = dns.resolver.resolve(domain, 'A')[0].to_text()
# формируем сообщение с информацией о домене
message = f"Информация о сайте {domain}:\nIP-адрес: {ip}\nNS-записи: {ns}\nA-записи: {a}"
except:
message = f"Не удалось получить информацию о домене {domain}"
# отправляем сообщение с информацией о домене
context.bot.send_message(chat_id=update.effective_chat.id,
text=message)
def main():
updater = Updater(token=TOKEN, use_context=True)
dispatcher = updater.dispatcher
# обработчик команды /start
dispatcher.add_handler(CommandHandler('start', start))
# обработчик сообщений с доменами
dispatcher.add_handler(MessageHandler(MessageFilters.text & ~MessageFilters.command, domain_info))
# запускаем бота
updater.start_polling()
if __name__ == '__main__':
main()
При запуске, выдает ошибку:
python3 bot.py
Traceback (most recent call last):
File "/root/mybot/bot.py", line 2, in <module>
from telegram.ext import Updater, MessageHandler, CommandHandler, MessageFilters
ImportError: cannot import name 'MessageFilters' from 'telegram.ext' (/usr/local/lib/python3.9/dist-packages/telegram/ext/__init__.py)
Сразу скажу, пробовал менять MessageFilters на просто Filters, не помогло, а также на BaseFilter
Далее пробовал переустанавливать обновить компонент..
pip install -U python-telegram-bot
Requirement already satisfied: python-telegram-bot in /usr/local/lib/python3.9/dist-packages (20.2)
Requirement already satisfied: httpx~=0.23.3 in /usr/local/lib/python3.9/dist-packages (from python-telegram-bot) (0.23.3)
Requirement already satisfied: certifi in /usr/lib/python3/dist-packages (from httpx~=0.23.3->python-telegram-bot) (2020.6.20)
Requirement already satisfied: httpcore<0.17.0,>=0.15.0 in /usr/local/lib/python3.9/dist-packages (from httpx~=0.23.3->python-telegram-bot) (0.16.3)
Requirement already satisfied: rfc3986[idna2008]<2,>=1.3 in /usr/local/lib/python3.9/dist-packages (from httpx~=0.23.3->python-telegram-bot) (1.5.0)
Requirement already satisfied: sniffio in /usr/local/lib/python3.9/dist-packages (from httpx~=0.23.3->python-telegram-bot) (1.3.0)
Requirement already satisfied: h11<0.15,>=0.13 in /usr/local/lib/python3.9/dist-packages (from httpcore<0.17.0,>=0.15.0->httpx~=0.23.3->python-telegram-bot) (0.14.0)
Requirement already satisfied: anyio<5.0,>=3.0 in /usr/local/lib/python3.9/dist-packages (from httpcore<0.17.0,>=0.15.0->httpx~=0.23.3->python-telegram-bot) (3.6.2)
Requirement already satisfied: idna in /usr/lib/python3/dist-packages (from rfc3986[idna2008]<2,>=1.3->httpx~=0.23.3->python-telegram-bot) (2.10)
WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv
Смотрю версию: pip show python-telegram-bot
Name: python-telegram-bot
Version: 20.2
Summary: We have made you a wrapper you can't refuse
Home-page: https://python-telegram-bot.org/
Author: Leandro Toledo
Author-email: devs@python-telegram-bot.org
License: LGPLv3
Location: /usr/local/lib/python3.9/dist-packages
Requires: httpx
Required-by:
Как решить уже не знаю...