Как использовать file id в любом боте
Перейти к содержимому

Как использовать file id в любом боте

  • автор:

Можно ли отправить любой файл по id aiogram

Мне нужно отправить любое вложение (фото,видео,аудио и тд) не загружая файл с компьютера, а используя file_id. Возможно ли это сделать? И если да, то как?

Отслеживать
задан 9 фев 2022 в 9:55
177 1 1 золотой знак 2 2 серебряных знака 14 14 бронзовых знаков

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

Можно, но для этого есть несколько замечаний, а именно:

  1. Вы должны где-то хранить эти file_id
  2. Вы должны знать тип файла, который стоит за этим file_id (фото, аудио, документ, etc.)
  3. Если Вы знаете, что файл — фотография, и знаете его ID, то отправить можно очень просто: await bot.send_photo(chat_id=123456, photo=’file_id_abcd123′)

Насколько мне известно, бот может отправлять файлы, которые уже были загружены в него, т.е. Вы не сможете отправить файлы из чужого бота. Но насчёт этого пункта я не уверен, можете проверить сами.

Отслеживать
ответ дан 10 фев 2022 в 10:50
2,871 1 1 золотой знак 11 11 серебряных знаков 19 19 бронзовых знаков

  • python
  • telegram
  • telebot
  • aiogram
    Важное на Мете
Похожие

Подписаться на ленту

Лента вопроса

Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.

Дизайн сайта / логотип © 2024 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2024.5.3.8609

Как получить file_id в телеграмм?

Здравствуйте. Требуется написать код на Python, который получает и отправляет file_id любого присланного файла. Я вижу это так. Сначала выбираешь, какой тип данных ты отправишь боту (видео, фото, музыка. ), потом включаешь сам скрипт, предварительно отправив фото нашему боту, и бот отправляет тебе file_id присланного файла (или эти данные выводятся в консоль).

  • Вопрос задан более трёх лет назад
  • 11003 просмотра

2 комментария

Простой 2 комментария

Amoralny

Какой модуль используете для бота ?

Merlyan @Merlyan Автор вопроса

Решения вопроса 2

hottabxp

Сергей Карбивничий @hottabxp Куратор тега Python

Сначала мы жили бедно, а потом нас обокрали..

Для фоточек думаю доделаете:

import telebot import requests token = 'токен' bot = telebot.TeleBot(token) @bot.message_handler(content_types=['text']) def repeat_all_message(message): print(message.text) bot.send_message(message.chat.id,message.text) @bot.message_handler(content_types=["document", "video", "audio"]) def handle_files(message): document_id = message.document.file_id file_info = bot.get_file(document_id) print(document_id) # Выводим file_id print(f'http://api.telegram.org/file/bot/') # Выводим ссылку на файл bot.send_message(message.chat.id, document_id) # Отправляем пользователю file_id if __name__ == '__main__': bot.polling(none_stop=True)

Ответ написан более трёх лет назад

Нравится 3 4 комментария

Как использовать один file_id в разных ботах телеграм? И зачем нужен file_unique_id в телеграм типах?

Здравствуйте.
Допустим, чат бот телеграм часто отправляет какую либо фотографию пользователю.
Как обычно это работает.
Картинку загружаем на серверы телеграм, получаем ее file_id, сохраняем, и дальше с помощью метода send_photo отправляем ее пользователю.
Этот же file_id нельзя использовать в другом боте телеграм, возникнет ошибка.

Вопрос: как можно один раз загруженную картинку, использовать в разных ботах телеграм? По сути надо сделать зеркала бота.

Вопрос 2: Зачем нужен file_unique_id, если с помощью него нельзя ни скачать картинку, ни использовать ее?

  • Вопрос задан более трёх лет назад
  • 1451 просмотр

Создание бота для Телеграм, который проверяет подписку на ваш Канал

создание бота для телеграма бесплатно своими руками

Все дальнейшие действия я рекомендую делать с компьютера. Так удобнее.

Итак, хватит прелюдий, за работу!

Шаг 1: Регистрация в сервисе

Мы будем пользоваться сервисом LeadConverter . У него есть бесплатный тариф, которым мы и воспользуемся. Переходим в сервис и регистрируем аккаунт.

Шаг 2: Создание нового бота через BotFather

Идем в Telegram в бот BotFather и запускаем его, если раньше вы это не делали. Далее выбираем команду create a new bot (или вводим в чат /newbot).

Далее вводим название вашего бота на русском. Я назвал бота “Бот канала Дмитрия Языкова”. На втором шаге надо ввести логин бота на латинице без пробелов, заканчиваться имя должно на _bot. У меня это yazykov_subscribe_bot. Логин бота должен быть уникальным. Как только вы все сделаете правильно, BotFather пришлет вам сообщение с уникальным токеном вашего нового бота. Он нам понадобится позже.

API KEY бота

Рекомендую сразу заполнить описание бота. Для этого выбираем команду /mybots. Далее находим там вашего нового бота и нажимаем на него. Затем нажимаем Edit Bot. По очереди заполняем все поля, разве что Description Picture можно оставить пустым.

Подсказка по полям:

  • Name – имя бота на русском. Оно отображается в профиле.
  • About – описание бота в профиле.
  • Description – та информация, которая выводится как приветствие перед запуском бота.
  • Description picture – картинка, которая выводится как приветствие перед запуском бота.
  • Botpic – аватар бота, который будет везде отображаться.

Важно! Надо добавить ваш новый бот в администраторы канала, подписку на который будем проверять. Для этого переходим в канал – Изменить – Администраторы. Нажимаем добавить администратора и находим бота по его логину, а затем даем права на все, кроме выбора администраторов.

выдача прав на бот

Шаг 3: Создание бота в конструкторе

Возвращаемся в личный кабинет сервиса LeadConverter и создаем нового бота. Название можно выбрать любое, я назвал своего “Проверка подписки на канал”. Нажимаем на кнопку редактировать.

Нас перекинет на страницу редактирования сценария бота, в котором будет два стандартных блока.

добавление сценария

Первый блок (сиреневый? фиолетовый? бордовый?) оставляем как есть. На второй блок нажимаем, должно появится окно редактирования. В нем выбираем действие “Сообщение” и вводим текст первого сообщения. Например:

Привет! ‌

Я дарю чеклист за подписку на канал!

Подпишись на https://t.me/ydmitryru и нажимай на кнопку «Подписка есть».

Должно получиться вот так.

отправка сообщения в бот

Не спешим жать “Сохранить”. Надо прокрутить вниз и нажать на кнопку “Добавить кнопку”. Текст кнопки “Подписка есть”, тип кнопки – кнопка. Вот теперь сохраняем.

Добавляем следующий блок – “Действие”. Для этого нажимаем на кнопку с плюсиком в правом нижнем углу, а затем выбираем “Добавить действие”. Переходим в настройки блока (нажимаем на него). Далее жмем “Добавить действие” и выбираем “Отправить через вебхук”. Вставляем туда ссылку:

https://api.telegram.org/bot()/getChatMember

Вместо () надо вставить токен канала. Мы его получили на предыдущем шаге. В URL не должно остаться скобочек, проверьте себя.

В поле “Сохранить результат в” вводим return.

Дальше нажимаем “Добавить параметр”. Их нужно сделать 2.

1. Параметр chat_id. Значение – ID канала. Это не логин! Откуда его взять? Переходим в телеграм и находим там бота LeadConverterToolkitBot и запускаем его. Он мне вывел ошибку “Неизвестное действие”, но это не имеет значения. Переходим в свой телеграм-канал и пересылаем в этот бот любой пост. В ответ получим ID канала, копируем его. Минус тоже нужно скопировать, это часть ID.

2. Параметр user_id, значение >.

В итоге должно получиться вот так:

веб-хук

Сохраняем. Не забываем настраивать связи между блоками:

связи между блоками

Сделать связь нужно именно между кнопкой “Подписка есть” и блоком действие.

Добавляем еще один блок действие. В этот раз выбираем дейстие “Установить переменную”. В поле “Установить переменную” выбираем “Создать новую переменную” и называем её “Подписка на Telegram-канал”. В Значение указываем >.

создание телеграм-бота

Добавляем связь блоков.

Следующий блок, который нужно добавить – это условие. В этот блок надо добавить целых 3 условия. Что переменная “Подписка на Telegram-канал” равно member, creator или admin.

условия в телеграм-боте

Сохраняем и добавляем связь с предыдущим блоком.

Далее создаем 2 блока Сообщения.

В первый вписываем текст “Супер! Ты уже подписан. Отправляю материал.”. Тут же в сообщении можно прикрепить ссылку на материал или добавить файл.

Во втором пишем:

Не вижу твоей подписки

Давай ты подпишешься, а я снова проверю

Подпишись на канал https://t.me/ydmitryru и нажимай на кнопку «Подписка есть»

И добавляем кнопку “Подписка есть”.

Настраиваем связи как на скрине

От зеленого выхода блока условия к текстовому сообщению с материалом. От красного – к сообщению с кнопкой. От кнопки текстового блока к первому блоку действия.

Шаг 4: Тестирование и запуск

В правом верхнем углу есть кнопка “Тестировать”. Выбираем “Telegram”. Привязываем свой личный аккаунт для теста и проходим всю цепочку. Т.к. вы админ в своем канале, вам бот вышлет материал. А как проверить сценарий без подписки?

Возвращаемся на страницу со списком ботов (кнопка-гамбурер в левом верхнем углу, далее “Боты”) и включаем активность бота.

как добавить телеграм-бота

Тут же находим кнопку “Ссылка на бота”, копируем ссылку на запуск бота и отправляем другу на тест.

Протестировали? Ну все, значит бот готов. Можно лить трафик 🙂

Видео инструкция

Если у вас возникли сложности с разработкой чат-бота по нашей статье, обязательно посмотрите это видео.

Telegram

Хочу консультацию

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *