Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Создание простого ТГ бота

Шахром Мухтоджов Ученик (97), на голосовании 2 недели назад
Всем привет!
Знающие люди, подскажите, как создать ТГ бота, который будет отправлять определенные сообщения людям которые на него подписались? Условно, мне раз в день нужно отправлять определенный текст подписавшимся, и всё, больше никакой функционал не нужен
Голосование за лучший ответ
Михаил Морозов Гуру (3274) 1 месяц назад
Вот простая инструкция:

### 1. Создание Telegram-бота

1. Откройте Telegram и найдите бота @BotFather.
2. Создайте нового бота:
- Введите команду /newbot и следуйте инструкциям:
- Дайте боту имя.
- Задайте уникальный username (окончание должно быть на "bot").
3. Сохраните полученный токен. Этот токен потребуется для доступа к API Telegram.

### 2. Установка необходимых библиотек

Для разработки бота вам понадобятся библиотеки. Если вы выбираете Python, то рекомендуется использовать библиотеку python-telegram-bot. Убедитесь, что у вас установлен Python. Затем установите библиотеку:

pip install python-telegram-bot

### 3. Создание основной логики бота

Создайте файл, например bot.py, и добавьте в него следующий код:

from telegram import Update
from telegram.ext import Updater, CommandHandler, CallbackContext
import logging
import time
import threading

# Включение логирования
logging.basicConfig(format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', level=logging.INFO)

# Здесь храните ID подписчиков
subscribers = set()

TOKEN = 'YOUR_BOT_TOKEN' # замените на ваш токен

def start(update: Update, context: CallbackContext) -> None:
"""Команда /start добавляет пользователя в подписчики."""
subscribers.add(update.message.chat_id)
update.message.reply_text('Вы подписались на ежедневные рассылки!')

def send_messages():
"""Функция для отправки сообщений подписчикам."""
while True:
time.sleep(86400) # 86400 секунд = 24 часа
message = "Ваше ежедневное сообщение!"
for subscriber in subscribers:
# Отправка сообщения
try:
context.bot .send_message(chat_id=subscriber, text=message)
except Exception as e:
logging.error(f"Ошибка отправки сообщения: {e}")

def main() -> None:
"""Запуск бота."""
updater = Updater(TOKEN)

# Получаем диспетчер для регистрации обработчиков
dispatcher = updater.dispatcher

# Обработчик команды /start
dispatcher.add_handler(CommandHandler("start", start))

# Запускаем поток для отправки сообщений
threading.Thread(target=send_messages, daemon=True).start()

# Запускаем бота
updater.start_polling()
updater.idle()

if __name__ == '__main__':
main()

### 4. Запуск бота

1. Замените YOUR_BOT_TOKEN на ваш токен.
2. Запустите бота:

python bot.py

### 5. Проверка работы

1. Найдите вашего бота в Telegram и отправьте команду /start. Вы должны получить сообщение о подписке.
2. Бот будет отправлять сообщение раз в день всем подписчикам.

### Обратите внимание

- Убедитесь, что ваш бот работает на сервере, чтобы его не отключали.
- Используйте базы данных (например, SQLite или PostgreSQL) для хранения ID пользователей, если хотите, чтобы бот не терял подписчиков при перезапуске.
- Также стоит обрабатывать возможные ошибки при отправке сообщений, чтобы избежать сбоев работы бота.


Программу для написания кода можно использовать Pycharm либо аналоги
Похожие вопросы