Всем ку дорогие форумчане В данной статье расскажу и покажу как создать своего TG чат-бота совершенно БЕСПЛАТНО. 1. Создаём самого бота (Если кто не знает) Для начала, заходим в ТГ и переходим в BotFather, после этого вводим команду /start. Нам открылась меню этого бота, чтобы его создать вводим команду /newbot. После этого вводим название самого бота (у меня будет - New Bot). Далее вводим юзер своего бота (Обязательно с окончанием _bot или просто bot, например suka_bot, lolzbot). Отлично! База нашего бота готова, теперь можем загрузить аватарку, описание и приветствие Для этого вводим команду /mybots, далее выбираем нашего бота и нажимаем Edit Bot и редактируем что надо. Далее переходим к Питону :povezlo: 2. Установка пайтона и программы Писать бота будем на Python, сразу же установим его. Переходим на сайт кликаем на Downloads и Downloads fot Window (Если у вас стоит винда) Выбираем версию 3.13 и устанавливаем её. И так, установили лоадер, запускаем его и устанавливаем сам питон... После того как всё установили, нужно определиться где будем писать код У меня же это будет Visual Studio Code. Программа может быть другая, это всё индивидуально. Не буду рассказывать как его устанавливать, просто оставлю сайт 3. Основа бота И так, после того как всё установили, создаем свой проект, для этого сразу выделяем место для всех будущий проектов. У меня это диск D (у вас может быть другой диск) там создаю папку PythonProject а в этой папке самого бота. В Visual создаем файл с названием main.py (Обязательно .py). Ну и начинаем писать основу нашего бота... 3.1. Основа Первое что мы делаем, устанавливаем библиотеку для работы с ботами тг. pip install python-telegram-bot Code pip install python-telegram-bot (В терминал) Сразу же создадим структуру нашего бота, добавим handlers. py где будут функции-обработчики и requirements.txt для упрощенной установки зависимостей Примерно так: Ну что же, давайте писать код. В файле main. py импортируем нужные библиотеки: from telegram.ext import Updater, CommandHandler, MessageHandler, Filters Python from telegram.ext import Updater, CommandHandler, MessageHandler, Filters Далее вставляем токен нашего бота, получаем диспетчер для регистрации обработчиков, добавляем наши команды (start), ну и обработчики текстовых сообщений Полный код: from telegram.ext import Updater, CommandHandler, MessageHandler, Filters from handlers import start, echo # Импортируем обработчики из handlers.py def main(): updater = Updater("TOKEN") # Не забудь заменить токен dispatcher = updater.dispatcher dispatcher.add_handler(CommandHandler("start", start)) # Обработчики команд dispatcher.add_handler(MessageHandler(Filters.text & ~Filters.command, echo)) # Обработчики сообщений updater.start_polling() # Запусе бота updater.idle() if __name__ == '__main__': main() Python from telegram.ext import Updater, CommandHandler, MessageHandler, Filters from handlers import start, echo # Импортируем обработчики из handlers.py def main(): updater = Updater("TOKEN") # Не забудь заменить токен dispatcher = updater.dispatcher dispatcher.add_handler(CommandHandler("start", start)) # Обработчики команд dispatcher.add_handler(MessageHandler(Filters.text & ~Filters.command, echo)) # Обработчики сообщений updater.start_polling() # Запусе бота updater.idle() if __name__ == '__main__': main() Ну и не забываем импортировать обработчиков из handlers.py Пока что закончили с main. py... Переходим в handlers и так же как с main импортируем библиотеки from telegram import Update from telegram.ext import CallbackContext Python from telegram import Update from telegram.ext import CallbackContext Далее прописываем функцию которая будет обрабатывать команду start def start(update: Update, context: CallbackContext) -> None: update.message.reply_text('Привет! Я простой чат-бот. Как я могу помочь?') Python def start(update: Update, context: CallbackContext) -> None: update.message.reply_text('Привет! Я простой чат-бот. Как я могу помочь?') Потом, пишем функцию которая будет обрабатывать текстовые сообщения def echo(update: Update, context: CallbackContext) -> None: update.message.reply_text(update.message.text) Python def echo(update: Update, context: CallbackContext) -> None: update.message.reply_text(update.message.text) Полностью код: from telegram import Update from telegram.ext import CallbackContext # Обпаботчик start def start(update: Update, context: CallbackContext) -> None: update.message.reply_text('Привет! Я простой чат-бот. Как я могу помочь?') # Обработчик сообщений def echo(update: Update, context: CallbackContext) -> None: update.message.reply_text(update.message.text) Python from telegram import Update from telegram.ext import CallbackContext # Обпаботчик start def start(update: Update, context: CallbackContext) -> None: update.message.reply_text('Привет! Я простой чат-бот. Как я могу помочь?') # Обработчик сообщений def echo(update: Update, context: CallbackContext) -> None: update.message.reply_text(update.message.text) 3.2. Ну теперь подошли к финалу Реализуем сам чат. Сейчас будем работать с handlers, добавляем словарь для хранения сообщений # функция для отправки сообщения другому пользователю async def send_message(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None: if len(context.args) < 2: await update.message.reply_text('Используйте: /send <user_id> <message>') return user_id = context.args[0] message = ' '.join(context.args[1:]) # Сохраняем сообщение в словаре if user_id not in messages: messages[user_id] = [] messages[user_id].append(message) await update.message.reply_text(f'Сообщение отправлено пользователю {user_id}.') Python # функция для отправки сообщения другому пользователю async def send_message(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None: if len(context.args) < 2: await update.message.reply_text('Используйте: /send <user_id> <message>') return user_id = context.args[0] message = ' '.join(context.args[1:]) # Сохраняем сообщение в словаре if user_id not in messages: messages[user_id] = [] messages[user_id].append(message) await update.message.reply_text(f'Сообщение отправлено пользователю {user_id}.') Ну теперь давайте реализуем функцию для получения сообщения # функция для получения сообщений async def get_messages(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None: user_id = str(update.message.from_user.id) if user_id in messages and messages[user_id]: user_messages = messages[user_id] await update.message.reply_text('\n'.join(user_messages)) messages[user_id] = [] # Очищаем сообщения после их получения else: await update.message.reply_text('У вас нет новых сообщений.') Python # функция для получения сообщений async def get_messages(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None: user_id = str(update.message.from_user.id) if user_id in messages and messages[user_id]: user_messages = messages[user_id] await update.message.reply_text('\n'.join(user_messages)) messages[user_id] = [] # Очищаем сообщения после их получения else: await update.message.reply_text('У вас нет новых сообщений.') Всё красиво, всё четко. Переходим к main. py Раннее создавали обработчик только для одной команды, сейчас реализуем для остальных import nest_asyncio import asyncio import logging from telegram import Update from telegram.ext import ApplicationBuilder, CommandHandler, ContextTypes # Настройка логирования logging.basicConfig(format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', level=logging.INFO) logger = logging.getLogger(__name__) # Импортируем обработчики из handlers.py from handlers import start, send_message, get_messages, my_id # Применяем nest_asyncio nest_asyncio.apply() async def main(): # Замените 'TOKEN' на правильный токен вашего бота application = ApplicationBuilder().token("TOKEN").build() # Обработчики команд application.add_handler(CommandHandler("start", start)) application.add_handler(CommandHandler("send", send_message)) application.add_handler(CommandHandler("messages", get_messages)) application.add_handler(CommandHandler("myid", my_id)) # Запускаем бота try: await application.run_polling() except Exception as e: logger.error(f"Ошибка при запуске бота: {e}") if __name__ == '__main__': asyncio.run(main()) Python import nest_asyncio import asyncio import logging from telegram import Update from telegram.ext import ApplicationBuilder, CommandHandler, ContextTypes # Настройка логирования logging.basicConfig(format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', level=logging.INFO) logger = logging.getLogger(__name__) # Импортируем обработчики из handlers.py from handlers import start, send_message, get_messages, my_id # Применяем nest_asyncio nest_asyncio.apply() async def main(): # Замените 'TOKEN' на правильный токен вашего бота application = ApplicationBuilder().token("TOKEN").build() # Обработчики команд application.add_handler(CommandHandler("start", start)) application.add_handler(CommandHandler("send", send_message)) application.add_handler(CommandHandler("messages", get_messages)) application.add_handler(CommandHandler("myid", my_id)) # Запускаем бота try: await application.run_polling() except Exception as e: logger.error(f"Ошибка при запуске бота: {e}") if __name__ == '__main__': asyncio.run(main()) UPD: исправлен код 3.3. Финал Принцип работы бота - Пользователь, который хочет отправить сообщение, должен использовать команду /send <user_id> <message>, где <user_id> — это ID пользователя, которому он хочет отправить сообщение, а <message> — текст сообщения. Поэтому реализуем команду для просмотра своего ID Весь код: *Извините, встроенный код не хотел работать, поэтому скринами* 4. Принцип работы бота Далее со второго акка смотрим сообщение А на этом всё, дорогие формчане! Если хотите продолжение или подробный разбор, ставьте + Если понравилось, поддержите лайком Если хотите скину готовый проект. PS: Бот будет работать ещё 3 часа t.me/n1wbot_bot t.me/n1wbot_bot t.me/n1wbot_bot