Тг бот для службы поддержки вашего сервиса.
Python:
import sqlite3
from telegram import Update
from telegram.ext import Application, CommandHandler, MessageHandler, filters, ContextTypes
# Замените 'YOUR_BOT_TOKEN' на ваш токен
BOT_TOKEN = 'YOUR_BOT_TOKEN'
# ID чата для поддержки (можно узнать через @RawDataBot)
SUPPORT_CHAT_ID = -1001234567890 # Замените на реальный ID
# Подключение к базе данных SQLite
conn = sqlite3.connect('support_bot.db', check_same_thread=False)
cursor = conn.cursor()
# Создание таблицы для хранения сообщений
cursor.execute('''
CREATE TABLE IF NOT EXISTS messages (
forwarded_message_id INTEGER PRIMARY KEY,
user_id INTEGER NOT NULL
)
''')
conn.commit()
async def start(update: Update, context: ContextTypes.DEFAULT_TYPE):
await update.message.reply_text("Привет! Я бот поддержки. Напишите ваш вопрос, и я помогу.")
async def handle_message(update: Update, context: ContextTypes.DEFAULT_TYPE):
user_message = update.message.text
user_id = update.message.from_user.id
chat_id = update.message.chat_id
forwarded_message = await update.message.forward(chat_id=SUPPORT_CHAT_ID)
cursor.execute('INSERT INTO messages (forwarded_message_id, user_id) VALUES (?, ?)', (forwarded_message.message_id, user_id))
conn.commit()
await update.message.reply_text("Ваш вопрос передан в службу поддержки. Мы свяжемся с вами в ближайшее время!")
async def handle_support_reply(update: Update, context: ContextTypes.DEFAULT_TYPE):
# Проверяем, что сообщение пришло из чата поддержки
if update.message.chat_id == SUPPORT_CHAT_ID:
reply_to_message = update.message.reply_to_message
if reply_to_message:
cursor.execute('SELECT user_id FROM messages WHERE forwarded_message_id = ?', (reply_to_message.message_id,))
result = cursor.fetchone()
if result:
user_id = result[0]
await context.bot.send_message(chat_id=user_id, text=update.message.text)
await update.message.reply_text("Ответ отправлен пользователю.")
cursor.execute('DELETE FROM messages WHERE forwarded_message_id = ?', (reply_to_message.message_id,))
conn.commit()
else:
await update.message.reply_text("Не удалось найти исходное сообщение пользователя.")
else:
await update.message.reply_text("Пожалуйста, ответьте на пересланное сообщение.")
def main():
application = Application.builder().token(BOT_TOKEN).build()
application.add_handler(CommandHandler("start", start))
application.add_handler(MessageHandler(filters.TEXT & ~filters.COMMAND, handle_message))
application.add_handler(MessageHandler(filters.REPLY & filters.Chat(chat_id=SUPPORT_CHAT_ID), handle_support_reply))
application.run_polling()
if __name__ == '__main__':
try:
main()
finally:
conn.close()