телеграм бот с базой даной пользивателей хто нажал на старт и сообщения сохранениям
ссылка — https://drive.google.com/drive/u/0/folders/1kfKE7WoHyxtSCiv-APHKTrMFiHHO0nTG
Telegram-бот с сохранением сообщений в базе данных SQLite через многопроцессность
Введение
В данном руководстве мы создадим Telegram-бота, который способен асинхронно сохранять сообщения от пользователей в базу данных SQLite и уведомлять владельца бота о каждом новом сообщении. Для обработки сообщений в фоновом режиме мы будем использовать многопроцессность, что позволит боту эффективно работать даже под высокой нагрузкой.
Подготовка
Прежде всего, убедитесь, что на вашем компьютере установлен Python, а также следующие библиотеки:
Если необходимо, установите библиотеку pyTelegramBotAPI:
pip install pyTelegramBotAPI
Создание бота и базы данных
import telebot import sqlite3 from multiprocessing import Process, Lock
Задайте токен вашего бота, полученный от @BotFather, и идентификатор пользователя (владельца бота):
TOKEN = '6721510821:AAH2SEW8-MLM8emjxBZD6mdJVdNAxdoFEUg' OWNER_USER_ID = '1155805451' bot = telebot.TeleBot(TOKEN)
2. Многопроцессная работа с базой данных: Для сохранения сообщений в базу данных используем функцию db_worker
, которая будет запускаться в отдельном процессе:
def db_worker(lock, message): with lock: conn = sqlite3.connect('pon.db') cursor = conn.cursor() cursor.execute(''' CREATE TABLE IF NOT EXISTS messages ( id INTEGER PRIMARY KEY AUTOINCREMENT, user_id INTEGER, username TEXT, message_text TEXT ) ''') conn.commit() username = message.from_user.username if message.from_user.username else "N/A" if str(message.from_user.id) == OWNER_USER_ID or message.chat.type == 'private': cursor.execute('INSERT INTO messages (user_id, username, message_text) VALUES (?, ?, ?)', (message.from_user.id, username, message.text)) conn.commit() bot.send_message(OWNER_USER_ID, f"Новое сообщение от пользователя {username} ({message.from_user.id}):\n{message.text}") conn.close()
Эта функция создает таблицу messages
, если она не существует, и добавляет в нее сообщения, а также уведомляет владельца бота о новых сообщениях.
3. Обработка входящих сообщений: Для обработки всех сообщений создаем обработчик, который запускает db_worker
в отдельном процессе для каждого сообщения:
@bot.message_handler(func=lambda message: True) def handle_all_messages(message): lock = Lock() process = Process(target=db_worker, args=(lock, message)) process.start() process.join()
4. Запуск бота: В конце файла добавьте код для запуска бота:
if __name__ == "__main__": bot.polling(none_stop=True)
Заключение
Теперь у вас есть Telegram-бот, способный асинхронно сохранять сообщения от пользователей
https://chat.openai.com/share/c659fd31-5cb2-4eb4-8d62-6e464039f3e5