@TheVladokSup

Как переслать пост из канала всем участникам через бота в ЛС? Как отправить случайный пост при взаимодействии с кнопкой в ТГ боте?

Доброго времени суток всем! =)

У меня созрело 2 вопроса:

1. Как можно переслать пост из канала всем участникам, а не только определённым по ID через бота в ЛС?

2. Как можно отправить случайный пост из канала участнику при взаимодействии с кнопкой через бота в ЛС?

Вот код, который мне помогли сделать, сможете его подправить под условия задачи? Буду очень благодарен)

### Пересылка постов из канала в ЛС пользователю от бота ###

from aiogram import types, Dispatcher
from createbot import dp, shieldbot
import keyboards

users = [6110994742]

@dp.channel_post_handler(content_types=types.ContentType.ANY)
async def channel_post(post: types.Message):
    for user in users:
        await shieldbot.forward_message(chat_id=user, from_chat_id=post.sender_chat.id, message_id=post.message_id)
  • Вопрос задан
  • 225 просмотров
Решения вопроса 1
@maximq
QA Engineer
1. Как можно переслать пост из канала всем участникам, а не только определённым по ID через бота в ЛС?

Записать в переменную users всех участников канала. Я не занимался рассылкой, но мне кажется что здесь понадобится таймаут при выполнении запросов. Иначе телеграм заблокирует запросы бота.

Лучше будет держать в базе id всех пользователей канала. Завести таблицу messageToSend со структурой вида
| id | user_id | message                                  |
| -- | ------- | ---------------------------------------- |
| 1  | 12345   | Привет, наша утренняя рассылка новостей  |
| 2  | 67890   | Привет, от тебя давно не было активности |

Периодически брать задания для отправки из этой таблицы

2. Как можно отправить случайный пост из канала участнику при взаимодействии с кнопкой через бота в ЛС?

from aiogram import types, Dispatcher
from createbot import dp, shieldbot
import keyboards
from random import choice

posts = [<id постов>]
chat_id = <id канала>

@dp.message_handler(commands=['random_post', 'lucky'])
async def random_channel_post(message: types.Message):
    await shieldbot.forward_message(chat_id=message.from_user.id, from_chat_id=chat_id, message_id=choice(posts))
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы