Взаимодействие между ботами в Telegram напрямую невозможно, так как Bot API не поддерживает это. Но вы можете использовать библиотеки MTProto для автоматизации почти всех взаимодействий с ботами (включая загрузку файлов). поскольку эти библиотеки просто автоматизируют учетные записи обычных пользователей, они не имеют ограничений API бота.
Вот пример загрузки файла с помощью телемарафона lib:
from telethon import TelegramClient, events
api_id = <API_ID>
api_hash = '<API_HASH>'
client = TelegramClient('session', api_id, api_hash)
BOT_USER_NAME="@filesending_sample_bot" # the username of the bot that sends files (images, docs, ...)
@client.on(events.NewMessage(func=lambda e: e.is_private))
async def message_handler(event):
if event.message.media is not None: # if there's something to download (media)
await client.download_media(message=event.message, )
async def main():
await client.send_message(BOT_USER_NAME, 'some text or command to trigger file sending') # trigger the bot here by sending something so that the bot sends the media
client.start()
client.loop.run_until_complete(main())
client.run_until_disconnected()
и в моем примере я создал минимального бота для телеграмм в javascript, который отправляет фотографию (как документ), когда получает любое сообщение для проверки вышеуказанного скрипта (но вы настраиваете вышеуказанный скрипт в соответствии с вашим случаем) :
const bot = new (require("telegraf"))(<MY_BOT_TOKEN>);
bot.on("message", (ctx) => ctx.replyWithDocument("https://picsum.photos/200/300"));
bot.launch();
Обратите внимание, что вы должны подключиться с помощью обычной учетной записи Telegram (не используя токен бота, а номер телефона), чтобы это работало. Если использование бота Telegram обязательно, вы можете использовать сценарий в фоновом режиме (запустив его как новый процесс или как REST api, et c ...) и вернуть результат боту Telegram.