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

Как сделать так чтобы Тг бот пересылал сообщения в группу

Дмитри Дмитри Ученик (96), на голосовании 2 недели назад
Как сделать так чтобы Тг бот после использования определённой команды пересылал сообщения в группу, и я мог на них отвечать в этой же группе от лица бота, а после повторного использования (мной в группе, либо человеком в боте) переставал пересылать
Голосование за лучший ответ
Виталий Лу Профи (774) 1 месяц назад
from telegram import Update, Bot
from telegram.ext import Updater, CommandHandler, MessageHandler, Filters, CallbackContext

# Настройки
TOKEN = 'YOUR_BOT_TOKEN'
GROUP_ID = -1001234567890 # ID группы, куда нужно пересылать сообщения
active_users = {} # Словарь для отслеживания пользователей, у которых активна пересылка

# Команда для включения пересылки
def start_forwarding(update: Update, context: CallbackContext):
user_id = update.message.from_ user.id
active_users[user_id] = True
update.message.reply_text('Пересылка сообщений включена. Ваши сообщения будут отправлены в группу.')

# Команда для выключения пересылки
def stop_forwarding(update: Update, context: CallbackContext):
user_id = update.message.from_ user.id
if user_id in active_users:
del active_users[user_id]
update.message.reply_text('Пересылка сообщений выключена.')
else:
update.message.reply_text('Пересылка не была активирована.')

# Обработка обычных сообщений
def forward_message(update: Update, context: CallbackContext):
user_id = update.message.from_ user.id

# Проверка, включена ли пересылка для пользователя
if user_id in active_users:
# Пересылаем сообщение в группу
bot = context.bot
message = update.message.text
bot.send_message(chat_id=GROUP_ID, text=f"Сообщение от {update.message.from_user.full_name}: {message}")

# Запоминаем ID оригинального сообщения для ответа
context.user_data['last_message_id'] = update.message.message_id

# Обработка сообщений из группы (ответы)
def handle_group_message(update: Update, context: CallbackContext):
if update.message.reply_to_message: # Проверяем, является ли сообщение ответом
original_message = update.message.reply_to_message.text
user_fullname = original_message.split(':')[0].replace('Сообщение от ', '')
message_text = update.message.text

# Отправляем ответ пользователю
bot = context.bot
for user_id, active in active_users.items():
if active and context.bot .get_chat(user_id).full_name == user_fullname:
bot.send_message(chat_id=user_id, text=f"Ответ из группы: {message_text}")

# Главная функция
def main():
updater = Updater(TOKEN, use_context=True)
dp = updater.dispatcher

# Обработчики команд
dp.add_handler(CommandHandler("start_forwarding", start_forwarding))
dp.add_handler(CommandHandler("stop_forwarding", stop_forwarding))

# Обработчики сообщений
dp.add_handler(MessageHandler(Filters.text & ~Filters.command, forward_message)) # Пересылка сообщений от пользователей
dp.add_handler(MessageHandler(Filters.text & Filters.chat(GROUP_ID), handle_group_message)) # Ответы из группы

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

if __name__ == '__main__':
main()
Дмитри ДмитриУченик (96) 1 месяц назад
Для этого какую библиотеку надо?
Виталий Лу Профи (774) Дмитри Дмитри, в первых строках описаны подключенные библиотеки
Дмитри ДмитриУченик (96) 1 месяц назад
Попробовал запустить команду и пишет вот это
Mat VeyУченик (111) 2 дня назад
Можно короче сделать:

from telebot import TeleBot


bot = TeleBot('[токен бота]')
TO_CHAT_ID = [id чата]


@bot.message_handler(content_types=['text'])
def all_messages(message):
bot.forward_message(TO_CHAT_ID, message.chat.id, message.message_id)


if name == '__main__':
bot.polling(none_stop=True)

Только надо библиотеку установить вот этой командой в консоле: pip install pyTelegramBotAPI
Mat Vey Ученик (111) 2 дня назад
from telebot import TeleBot


bot = TeleBot('[токен бота]')
TO_CHAT_ID = [id чата]


@bot.message_handler(content_types=['text'])
def all_messages(message):
bot.forward_message(TO_CHAT_ID, message.chat.id, message.message_id)


if __name__ == '__main__':
bot.polling(none_stop=True)

Только перед этим надо установить библиотеку командой: pip install pyTelegramBotAPI
Похожие вопросы