Pull to refresh

Простой telegram BotNet на Python

Level of difficultyEasy

Всем привет! В этой статье я хочу рассказать, как можно написать простой Telegram BotNet на Python с помощью библиотеки Telethon, которую потом можно улучшить до сносера аккаунтов.

Перейдем к созданию

Для начала нам, собственно, потребуется установить саму библиотеку Telethon. Это можно сделать с помощью команды

pip install telethon

Теперь открываем любой удобный IDE (PyCharm, VS Code и т. д.) и начинаем писать код!

Подключим в наш код нужные библиотеки

from telethon import TelegramClient, events, functions
from telethon.sync import TelegramClient
import asyncio
import logging
import json

Чтобы наш BotNet не был пустышкой, нам нужны сессии Telegram (их можно купить на тематических сайтах). Чтобы нам было удобнее добавлять новые сессии в будущем и не менять код, создадим файл sessions.json, который будет выглядеть следующим образом:

{
    "accounts": [
    {
        "session_file": "1",
        "phone": "...",
        "app_id": ...,
        "app_hash": "..."
    }
    ]
}

Подставляем туда свои данные.

  • "phone" - номер телефона аккаунта;

  • "app_id" - ID аккаунта (можно получить на официальном сайте my.telegram.org);

  • "app_hash" - хеш аккаунта (получается там же, где и ID).

Дальше перейдём в main.py и напишем туда следующий код:

from telethon import TelegramClient, events, functions
import asyncio
import logging
import json


# Загрузка конфигурации
with open('session.json', 'r') as f:
    config = json.load(f)

accounts = config['accounts']
clients = []

# Настройка логирования
logging.basicConfig(filename='telegram.log', level=logging.INFO)

async def main():
    for account in accounts:
        # Правильное создание клиента:
        # 1 параметр - session (может быть строкой или файлом)
        # 2 параметр - api_id
        # 3 параметр - api_hash
        client = TelegramClient(account['session_file'], account['app_id'], account['app_hash'])
        
        await client.start(phone=account['phone'])
        clients.append(client)

if __name__ == '__main__':
    asyncio.run(main())


Внутри main() можно реализовать свои функции.
Примеры кастомных функций:

  1. Отправка жалоб на аккаунт

  2. Спам сообщениями с разных аккаунтов

  3. Вход на канал/беседу

Объяснение кода

1. Импорт библиотек

import telebot  # Не используется в коде (можно удалить)
from telethon import TelegramClient, events, functions
import asyncio
import logging
import json
from telethon.sync import TelegramClient  # Избыточный импорт
  • Telethon — основная библиотека для работы с Telegram API

  • asyncio — для асинхронного выполнения кода

  • logging — для логирования работы бота

  • json — для работы с конфигурационным файлом


2. Загрузка конфигурации

with open('session.json', 'r') as f:
    config = json.load(f)

accounts = config['accounts']
clients = []
  • Загружаются данные аккаунтов из файла session.json

  • Формат файла должен содержать ключ accounts со списком аккаунтов:


3. Настройка логирования

logging.basicConfig(filename='telegram.log', level=logging.INFO)
  • Все события будут записываться в файл telegram.log


4. Основная функция main()

async def main():
    for account in accounts:
        client = TelegramClient(account['session_file'], account['app_id'], account['app_hash'])
        await client.start(phone=account['phone'])
        clients.append(client)
  1. Для каждого аккаунта создаётся клиент Telethon:

    • session_file — имя файла для хранения сессии

    • app_id и app_hash — данные из my.telegram.org

  2. Происходит авторизация по номеру телефона

  3. Клиент добавляется в список clients для дальнейшего использования


5. Запуск ботнета

if __name__ == '__main__':
    asyncio.run(main())
  • Запускает асинхронную функцию main()

Заключение

В этой статье мы создали основу для Telegram BotNet на Python. Вы научились подключать несколько аккаунтов через Telethon и сохранять сессии в JSON. Код можно расширить – добавляйте свои функции в main(). Спасибо за чтение! 🚀 Пишите в комментариях, какие функции хотите увидеть в первую очередь.

Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.