Пересылка сообщений в телеграмм бота из созданного телеграмм канала
Суть бота заключается в том, что если пользователь выбирает тему, то через определённый промежуток времени бот будет присылать ему сообщения из телеграмм канала (все нужные телеграмм каналы уже созданы) в чат с ботом. Проблема заключается в том, что пересылка сообщений из канала в чат не работает.
# pip install pytelegrambotapi
import telebot
from telebot import types
# import config
import time
# from telethon import TelegramClient, events
# # from aiogram import Bot, types
#
# from aiogram.dispatcher import Dispatcher
# from aiogram.utils import executor
# import asyncio
# # from telethon import TelegramClient, events
# # from collections import deque
# # from tornado.ioloop import IOLoop
bot = telebot.TeleBot('5321447421:AAGQ5BuFSTFdHSaDSmhaSOgOX8AXiAeMAWU')
name = ''
theme = ''
mon = 0
chatID = ''
@bot.message_handler(commands=['start'])
def start(message):
sent = bot.send_message(message.chat.id, 'Привет, меня зовут NewsBot, как я могу к тебе обращаться?')
bot.register_next_step_handler(sent, hello)
def hello(message):
global name
global chatID
name = message.text
markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
btn1 = types.KeyboardButton("Искусство")
btn2 = types.KeyboardButton("Кино")
btn3 = types.KeyboardButton("Садоводство")
btn4 = types.KeyboardButton("Наука и техника")
btn5 = types.KeyboardButton("Спорт")
btn6 = types.KeyboardButton("Инвестиции")
btn7 = types.KeyboardButton("Автомобили")
btn8 = types.KeyboardButton("Кулинария")
btn9 = types.KeyboardButton("Мода")
btn10 = types.KeyboardButton("Все темы сразу")
markup.add(btn1, btn2, btn3, btn4, btn5, btn6, btn7, btn8, btn9, btn10)
send = bot.send_message(message.chat.id, text="Отлично, "+name+". Какая тема тебе больше всего интересна?".format(message.from_user), reply_markup=markup)
bot.register_next_step_handler(send, buy)
return name
def buy(message):
global theme
global chatID
theme = message.text
if theme == "Искусство":
chatID = '-1001641835381'
elif theme == "Кино":
chatID = ''
elif theme == "Садоводство":
chatID = ''
elif theme == "Наука и техника":
chatID = ''
elif theme == "Спорт":
chatID = ''
elif theme == "Инвестиции":
chatID = ''
elif theme == "Автомобили":
chatID = ''
elif theme == "Кулинария":
chatID = ''
elif theme == "Мода":
chatID = ''
elif theme == "Все темы сразу":
chatID = ''
else:
bot.send_message(message.chat.id, text="На такую комманду я не запрограммирован..")
return theme
mis = bot.send_message(message.chat.id, 'Хороший выбор, мне тоже нравится тема '+theme+'! Скажи пожалуйста, раз в сколько минут ты хочешь получать сообщения по выбранной теме??')
bot.register_next_step_handler(mis, tim)
return theme
def tim(message):
global mon
while mon == 0:
try:
mon = int(message.text)
except Exception:
bot.send_message(message.from_user.id, 'Цифрами, пожалуйста')
mon = int(message.text)
mon = mon * 60
mins = mon
if mon == 60:
send = bot.send_message(message.chat.id, 'Замечательно, ты будешь получать уведомления раз в минуту.')
elif mon == 120:
send = bot.send_message(message.chat.id, 'Замечательно, ты будешь получать уведомления раз в '+mon / 60+' минуты.')
elif mon == 180:
send = bot.send_message(message.chat.id, 'Замечательно, ты будешь получать уведомления раз в '+mon / 60+' минуты.')
elif mon == 240:
send = bot.send_message(message.chat.id, 'Замечательно, ты будешь получать уведомления раз в '+mon / 60+' минуты.')
else:
send = bot.send_message(message.chat.id, 'Замечательно, ты будешь получать уведомления раз в '+mon / 60+' минут.')
a = 0
while a == 0:
while mins > 0:
time.sleep(1)
mins = mins - 1
bot.register_next_step_handler(send, answers)
@bot.message_handler(content_types=['photo', 'document', 'audio', 'video'])
def all_media_messages(message):
bot.forward_message(chatID, message.chat.id, message.message_id)
# bot.forward_message(
# chat_id=msg.chat.id, # chat_id чата в которое необходимо переслать сообщение
# from_chat_id=msg.chat.id, # chat_id из которого необходимо переслать сообщение
# message_id=msg.message_id # message_id которое необходимо переслать
# )
# @bot.on(events.NewMessage(chatID))
# async def main(event):
# await bot.forward_messages(chatID, event.message)
mins = mon
def answers(message, res = False):
answer = message.text
if answer == "/stop":
bot.send_message(message.chat.id, 'Хорошо, до скорых встреч! но помни, чтобы снова начать работу напиши /start.')
elif answer == "/theme":
markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
item1 = types.KeyboardButton("Давай!")
item2 = types.KeyboardButton("Я уже передумал)))")
markup.add(item1)
markup.add(item2)
send = bot.send_message(message.chat.id, 'Ну если ты так хочешь изменить тему, то давай сделаем это!')
bot.register_next_step_handler(send, handle_text)
else:
bot.send_message(message.chat.id, 'Я тебя не понимаю. Напиши:/n/theme, чтобы изменить тему/n/stop, чтобы закончить работу')
def handle_text(message):
go = message.text
if go == 'Давай!':
bot.register_next_step_handler(message, hello)
else:
markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
item1 = types.KeyboardButton("Конечно не против!")
markup.add(item1)
send = bot.send_message(message.chat.id, 'Тогда, если ты не против, я продолжу свою работу!')
bot.register_next_step_handler(send, but)
def but(message):
mis = bot.send_message(message.chat.id, 'Напомни мне пожалуйста, раз в сколько минут ты хочешь получать уведомления по выбранной теме?')
bot.register_next_step_handler(mis, tim)
# @bot.message_handler(content_types=["text"])
def get_text_messages(message):
bot.message_handler(content_types=['text', 'document', 'audio'])
if message.text == "Привет":
bot.send_message(message.chat.id, 'Привет, чтобы начать работу напиши /start.')
elif message.text == "Спасибо":
bot.send_message(message.from_user.id, "Обращайтесь!")
elif message.text == "спасибо":
bot.send_message(message.from_user.id, "Всегда пожалуйста")
elif message.text == "/help":
bot.send_message(message.from_user.id, 'Напиши "Привет"')
else:
bot.send_message(message.from_user.id, "Я тебя не понимаю. Напиши /help, чтобы узнать о моих возможностях.")
bot.polling(none_stop=True, interval=0)
Ответы (1 шт):
Автор решения: No end music
→ Ссылка
Могли бы вы указать конкретную строчку кода которая не работает, сейчас я думаю что ошибка либо с в том что вы используете message_handler() вместо channel_post_handler(), либо неправильно передаёте параметры в bot.forward_message()