Как получить group id Telegram

enter image description here

Я отправляю в телеграмму несколько фотографий в виде группы. Как я могу получить file_id все мои загруженные фотографии? Я использую webhooks, но ответ не содержит никаких данных обо всех фотографиях, просто некоторые данные о последней загруженной фотографии и media_group_id . Как я могу получить все file_id моих загруженных фотографий группы ответ:

спросил(а) 2018-05-04T20:13:00+03:00 5 лет назад
добавить комментарий
пожаловаться

Хорошо, этот способ не прост и не изящный, но он работает. Нам нужно увидеть элемент media_group_id в media_group_id — это означает, что это группа носителей. Если первая точка верна — сохраните данные об этом носителе на собственном сервере (данные должны содержать media_group_id )

Пример: [«media_group_id» => [[некоторые данные о фотографии]]]

Когда придет следующий webhook, нам нужно увидеть его media_group_id , если он тот же — ok, добавьте его в массив.

Fastest way to Get Telegram Channel/Group Name or ID?

Пример: [«media_group_id» => [[некоторые данные о фотографии], [некоторые данные о фотографии]]]

if not — ok, создать новый элемент массива:

Пример: [«media_group_id» => [[некоторые данные о фотографии]], «media_group_id2» => [[некоторые данные о фотографии]]]

Таким образом, мы получили массив, содержащий все данные о фотографиях одной (или более) группы. хм. Мне это не нравится, но как лучше?

Источник: progi.pro

Как получить все вложения по media_group_id?

Используя aiogram для написания эхо-бота возникла проблема: при использовании стандартных методов получения новых сообщений функция вызывается дважды при отправки, например, группы из двух изображений. Пример:

Пример запуска функции два раза

import asyncio from aiogram import Bot, types from aiogram.utils import executor from aiogram.dispatcher import Dispatcher token = » bot = Bot(token=token) dp = Dispatcher(bot) async def anything(msg: types.Message): await msg.answer(‘Basic reply’) dp.register_message_handler(anything, content_types=[‘photo’,’text’]) if __name__ == ‘__main__’: executor.start_polling(dp)

Еще по теме:  Бот Телеграм стирает фон для стикеров

Я решил эту проблему следующим образом:

import asyncio from aiogram import Bot, types from aiogram.utils import executor from aiogram.dispatcher import Dispatcher TOKEN = » bot = Bot(token=TOKEN) dp = Dispatcher(bot) flag_group_id = None async def anything(msg: types.Message): global flag_group_id if msg.media_group_id and not flag_group_id: flag_group_id = msg.media_group_id await msg.answer(‘Получаю вложения’) await asyncio.sleep(1) #get attachments by media_group_id await msg.answer(‘Отправляю вложения’) else: if not msg.media_group_id: flag_group_id = None await msg.answer(msg.text or msg.caption or ‘Нет сообщения’) dp.register_message_handler(anything, content_types=[‘photo’,’text’]) if __name__ == ‘__main__’: executor.start_polling(dp)

И появилась следующая: как получить все медиа-вложения по media_group_id?

How To Get Channel & Group Id In Telegram | Latest Full Tutorial

Ответы (1 шт):

Спасибо еще раз!

from aiogram import Bot, types from aiogram.dispatcher import Dispatcher from aiogram.utils import executor import random bot = Bot(token = «») dp = Dispatcher(bot) photo_delivered: set[int] = set() async def say_thanks(user: types.User): if user.id in photo_delivered: return photo_delivered.add(user.id) await bot.send_message(user.id, «Спасибо, поехали дальше. «) async def photo_handler(message: types.Message): await say_thanks(message.from_user) photo = message.photo.pop() await photo.download(f’download/.jpg’) dp.register_message_handler(photo_handler, content_types=[‘photo’]) executor.start_polling(dp, skip_updates=True)

Источник: husl.ru

Telegram api. Получить все загруженные фотографии от media_group_id

Я отправляю своему боту-телеграмму несколько фотографий для группы. Как я могу получить file_id все мои загруженные фотографии?

Я использую webhooks, но ответ не содержит никаких данных обо всех фотографиях, только некоторые данные о последней загруженной фотографии и media_group_id , Как я могу получить все file_id фотографии моей загруженной группы

ответ:

user9742465 04 май ’18 в 17:13 2018-05-04 17:13
2018-05-04 17:13

3 ответа

Telegram Bot API не предоставляет вашему веб-хук никакой достоверной информации о порядке каждого элемента в медиа-группе. https://core.telegram.org/bots/api

  1. Если бот находится в приватном чате, сохраните входящие file_id против их media_group_id . Всякий раз, когда media_group_id изменения у вас будет все, что вам нужно для использования. Вовлеките пользователя каким-либо другим способом, чтобы вы могли быстро определить media_group_id измениться и быстро отреагировать на эту обработку.
  2. Если бот находится в групповом чате, сохраните входящие file_id против пользователей id так же как media_group_id и аналогичным образом отслеживать изменения в media_group_id и пользователь id принять участие.
Еще по теме:  Как в Телеграме узнать номера 777

Когда решение становится слишком сложным для меня, я предпочитаю вернуться к основной причине моей потребности и, возможно, обнаружить, что мне не нужно делать то, что API не позволяет, например «Получить все загруженные фотографии по media_group_id «. Может быть, я смогу обработать их по отдельности в потоке обновлений.

Совет: если у медиа-группы есть caption и вы заботитесь только о первом медиа-элементе в группе, а затем отслеживаете media_group_id а также caption входящего сообщения должно быть достаточно.

if(message.caption != null message.media_group_id != null) < // first item in new group received >

Источник: stackru.com

Рейтинг
( Пока оценок нет )
Загрузка ...