Skip to content
mrVanich
Назад до нотаток

Telegram Bot Python (part 1)

Щоб створити текстовий файл на сервері та записувати до нього повідомлення, які надходять до бота, можна використовувати мову програмування Python та бібліотеку для роботи з Telegram API – python-telegram-bot.

Ось приклад коду Python, який можна використовувати для створення текстового файлу та запису до нього повідомлень, які надходять до бота:

import telegram
import datetime

TOKEN = 'your_bot_token'

# Задаємо назву файлу, до якого будемо записувати повідомлення
FILE_NAME = 'messages.txt'

# Функція, яка буде викликатись при надходженні нового повідомлення
def new_message(update, context):
    # Отримуємо зміст повідомлення та id користувача, який його відправив
    text = update.message.text
    user_id = update.message.from_user.id
    
    # Отримуємо ім'я користувача, який надіслав повідомлення
    user_name = update.message.from_user.full_name
    
    # Отримуємо поточну дату та час
    current_time = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
    
    # Записуємо повідомлення до файлу, додаючи інформацію про автора та дату та час надходження повідомлення
    with open(FILE_NAME, 'a') as f:
        f.write(f'{user_name} ({user_id}) - {current_time}: {text}\n')

# Створюємо об'єкт бота з заданим токеном
bot = telegram.Bot(TOKEN)

# Створюємо об'єкт для обробки повідомлень бота
updater = telegram.ext.Updater(bot=bot)

# Реєструємо функцію new_message як обробник повідомлень
updater.dispatcher.add_handler(telegram.ext.MessageHandler(telegram.ext.Filters.text, new_message))

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

Цей код створює обробник повідомлень, який записує текстові повідомлення, які надходять до бота, до файлу messages.txt. Кожне повідомлення записується у вигляді Ім'я користувача (user_id) - дата і час: текст повідомлення.

Інший варіант.

Отже, для реалізації такого бота нам потрібно встановити Python на сервері і використати бібліотеку Telebot.

Ось код, який додає повідомлення до текстового файлу з додаванням дати та часу та імені користувача:

import telebot
import datetime

# зчитуємо токен бота з файлу
with open('token.txt', 'r') as file:
    TOKEN = file.read().replace('\n', '')

bot = telebot.TeleBot(TOKEN)

# функція, яка буде викликатися при отриманні повідомлення
@bot.message_handler(func=lambda message: True)
def echo_all(message):
    # отримуємо дату та час
    current_time = datetime.datetime.now().strftime("%d-%m-%Y %H:%M:%S")
    
    # формуємо рядок для запису в файл
    log_entry = f"{current_time} - {message.from_user.first_name} {message.from_user.last_name}: {message.text}"
    
    # записуємо рядок в файл
    with open("log.txt", "a") as f:
        f.write(log_entry + "\n")
    
    # відправляємо відповідь користувачу
    bot.reply_to(message, "Записано в журнал")

# запускаємо бота
bot.polling()

Після запуску цього скрипту, бот буде очікувати повідомлень та додавати їх до текстового файлу “log.txt” у наступному форматі:

дата-час - ім'я користувача: текст повідомлення

Ви можете запустити цей скрипт на своєму сервері, встановивши Python та бібліотеку Telebot. Переконайтеся, що у вас є дозвіл на запис до директорії, де ви збираєтеся зберігати журнал. Також не забудьте вказати токен свого бота в файлі “token.txt”.