Создайте собственного Telegram-бота для отслеживания черных списков IPv4
Создайте Telegram-бота на VPS AlexHost для выполнения автоматизированных задач
Зачем создавать бота на AlexHost? Автоматизация задач с помощью бота Telegram – это просто и эффективно. VPS от AlexHost с NVMe-хранилищем, корневым доступом и защитой от DDoS-атак обеспечивает быстрое и безопасное развертывание бота. В этом руководстве подробно описана настройка бота для проверки черных списков IPv4 на AlexHost.
Подготовка к созданию бота
Прежде чем приступать к установке бота на сервер, необходимо добавитьhttps://dev.alexhost.com/faq/create-your-own-telegram-bot-to-track-ipv4-blacklists/?preview=trueitionally установить необходимые библиотеки. Для этого убедитесь, что у вас установлен Python (рекомендуется версия 3.7 или выше). Затем установите необходимые библиотеки с помощью pip:
pip install selenium
pip install aiogram==3.4.1
Создание бота в Telegram
Шаг #1. В приложении Telegram найдите бота BotFather. BotFather – это официальный бот Telegram, который используется для создания и управления другими ботами. С его помощью вы можете регистрировать новых ботов, настраивать их параметры, получать API-токены и обновлять информацию, например описание, аватар или команды. Это первый шаг к запуску собственного Telegram-бота.Шаг № 2. Затем вам нужно создать нового бота командой /newbot и следовать дальнейшим инструкциям.Шаг № 3. После того как все шаги будут выполнены правильно, вам нужно скопировать токен вашего бота, он понадобится в коде. Вы получите сообщение следующего содержания: Готово! Поздравляем вас с новым ботом. Вы найдете его по адресу your_new-bot_name.Шаг № 4. Далее мы переходим к сложному и важному шагу – написанию кода. На вашем сервере нужно создать файл, например my_bot.py, и вставить в него следующий код (этот код направлен на создание бота для проверки IPv4-адресов на наличие в черных списках):
import asyncio
import timefrom aiogram import Bot, Dispatcher, F
from aiogram.filters import CommandStart
from aiogram.types import Message
from selenium import webdriver
from selenium.webdriver.common.by import By
bot = Bot('YOUR_BOT_TOKEN_HERE') # Replace with your bot's token
dp = Dispatcher()
def get_results(IP):
results = []
driver = webdriver.Chrome()
# URL, где можно сразу проверить статус в черных списках
driver.get("https://mxtoolbox.com/SuperTool.aspx?action=blacklist%3a81.200.16.134&run=toolpage
")
time.sleep(5) # ждем загрузку страницы
input_field = driver.find_element(By.NAME, 'ctl00$ContentPlaceHolder1$txtInput2')
input_field.clear()
input_field.send_keys(IP)
time.sleep(4)
search_button = driver.find_element(By.ID, 'btnAction3')
search_button.click()
time.sleep(5)
status_results = driver.find_elements(By.CLASS_NAME, 'table-column-Status')[:60]
name_results = driver.find_elements(By.CLASS_NAME, 'table-column-Name')[:60]
if len(status_results) == len(name_results):
for status, name in zip(status_results, name_results):
results.append([status.text, name.text])
else:
print("The number of statuses and names does not match!")
driver.quit()
return results
@dp.message(CommandStart())
async def start(message: Message):
await message.answer(f'Привет {message.from_user.first_name}, Enter your IP to check')
@dp.message(F.text)
async def get_IP(message: Message):
text = ''
await message.answer('Checking the IPv4')
for status, name in get_results(message.text):
if status.strip() == 'OK':
text += f'✅: {name}n'
else:
text += f'❌: {name}n'
await message.answer(text)
async def main():
await dp.start_polling(bot)
if name == 'main':
print("Bot is running")
asyncio.run(main())