Telegram Bot Python (part 1)

Автор | 29.03.2023

Щоб створити текстовий файл на сервері та записувати до нього повідомлення, які надходять до бота, можна використовувати мову програмування 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”.

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *