как реализовать пересылку сообщения(фото) от конкретного пользователя(админа например) остальным пользователям бота с помощью telebot?
пытался какими то разными способами сделать эту пересылку, пришел к тому что нужно создавать БД, которое будет собирать ID пользователей для рассылки. одно дело рассылать сообщение, предусмотренное кодом, а другое - сообщение от человека. код(бот) никак не распознает чат откуда пересылать, поэтому и пишу сюда. огрызки кода (извиняюсь за грязный код, я джун):
bot = telebot.TeleBot('mytoken')
@bot.message_handler(commands=['start'])
def handle_start(message):
bot.copy_message( #<-- здесь просто смотрел будет ли работать
chat_id='@myid', # копирование сообщения при команде старт
from_chat_id=message.chat.id,
message_id=message.id
)
with open('usr.txt', 'a+') as usr:[![введите сюда описание изображения][1]][1]
print(message.chat.id, file=usr)
@bot.message_handler(commands=['raspysanie'])
def rassylka(message):
if message.chat.id == 5707503924:
for i in open('usr.txt', 'r').readlines():
bot.copy_message( #<-- тут уже пытался рассылать всем
chat_id='@myid', # из БД, но опять ниче не вышло
from_chat_id=message.chat.id,
message_id=message.id
)
Ответы (1 шт):
Автор решения: Рустам Рысаев
→ Ссылка
admin_ids = []
# Функция для записи ID пользователей в файл
def save_user_id(user_id):
with open('usr.txt', 'a+') as file:
file.write(str(user_id) + '\n')
@bot.message_handler(commands=['start'])
def handle_start(message):
user_id = message.from_user.id
save_user_id(user_id)
bot.reply_to(message, "Хелло ворлд!")
@bot.message_handler(commands=['raspysanie'])
def rassylka(message):
if message.chat.id in admin_ids:
with open('usr.txt', 'r') as file:
user_ids = file.readlines()
for user_id in user_ids:
user_id = user_id.strip()
try:
# Отправляем сообщение всем пользователям
bot.forward_message(user_id, message.chat.id, message.message_id)
except Exception as e:
print(f"Не удалось отправить сообщение пользователю {user_id}: {e}")
else:
bot.reply_to(message, "У вас нет прав для отправки рассылки.")
@bot.message_handler(content_types=['photo', 'text'])
def handle_messages(message):
if message.chat.id in admin_ids:
with open('usr.txt', 'r') as file:
user_ids = file.readlines()
for user_id in user_ids:
user_id = user_id.strip()
try:
bot.send_photo(user_id, message.photo[-1].file_id)
except Exception as e:
print(f"Не удалось отправить фото пользователю {user_id}: {e}")