Бот, который взаимодействует с ботами Telegram - PullRequest
0 голосов
/ 05 мая 2020

Мне было интересно, могу ли я автоматически загружать файлы из других ботов Telegram. Я искал в Интернете, как создать бота Python (или бота Telegram, написанного на Python), который делает это, но я ничего не нашел. Кто-нибудь может мне помочь?

1 Ответ

1 голос
/ 06 мая 2020

Взаимодействие между ботами в 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.

...