@liss48

Как отправить новый пост во все беседы бота?

@bot.on.raw_event(GroupEventType.WALL_POST_NEW, dataclass=GroupTypes.WallPostNew)
async def wall_post_new(event: GroupTypes.WallPostNew):
    try:
        await bot.api.messages.send(
            peer_id=айди кому надо отправить ,message='Новый пост!', random_id=0, attachment = f'wall-{event.group_id}_{event.object.id}'
        )

    except Exception as ex:
        print(f'error: {ex}')


Данный код отправляет новый пост только тому чей id страницы записан в peer_id. Как мне отправить пост во все беседы где есть бот? Пытался через цикл передавать messages.getConversations но не получилось, и что в таком случае передавать в peer_id?
  • Вопрос задан
  • 341 просмотр
Пригласить эксперта
Ответы на вопрос 2
@Wearant
1е это передавать надо peer_ids - список бесед.
А для этого нам надо получить этот список с помощью messages.getConversations и внести их в список peer_ids
Ответ написан
Комментировать
Lapita12
@Lapita12
Тесты, тесты?
Для отправки сообщения во все беседы, где есть бот, вам нужно получить список всех бесед, в которых бот является участником, и отправить сообщение в каждую из них. Вы можете использовать метод messages.getConversations для получения списка бесед, а затем перебрать каждую беседу и отправить сообщение в ней.

conversations = await bot.api.messages.getConversations(filter='all')
for conversation in conversations['items']:
    peer_id = conversation['peer']['id']
    try:
        await bot.api.messages.send(
            peer_id=peer_id,
            message='Новый пост!',
            random_id=0,
            attachment=f'wall-{event.group_id}_{event.object.id}'
        )
    except Exception as ex:
        print(f'error: {ex}')


В этом примере мы получаем список всех бесед, используя метод messages.getConversations, и затем перебираем каждую беседу и отправляем сообщение в ней, используя метод messages.send . В peer_id мы передаем идентификатор беседы, а в attachment мы передаем идентификатор записи на стене, которую мы хотим прикрепить к сообщению.
Ответ написан
Ваш ответ на вопрос

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

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