单击机器人电报中的按钮后发送 x 张照片

sending x photos after i click a button in a bot telethon telegram

@bot.on(events.CallbackQuery)
async def handler(event):
global fotomandate
global i
if event.data == b"1":
    await event.respond("how many photos do i send?") 
    numerofoto = int(input("how many photos do i send?")) ##ignore this line i'll fix later
    print (numerofoto)
    while i < numerofoto:
        path = (r"C:\Users\x\Desktop\Nuova cartella (2)")
        fotorandom = random.choice([
            x for x in os.listdir(r"C:\Users\x\Desktop\Nuova cartella (2)")
            if os.path.isfile(os.path.join(path, x))
        ])
        i += 1
        await event.reply(file=fotorandom)

我需要从目录发送 n(在电报输入中)随机照片,但它说

ValueError:无法将 bonni media-jpg 转换为媒体。不是现有文件、HTTP URL 或类似 bot-API 的有效文件 ID

如错误所述:

ValueError: Failed to convert bonni media-jpg to media. Not an existing file, an HTTP URL or a valid bot-API-like file ID

在循环守卫内部,您正在做 os.path.join(path, x)。但是,您的 x 不包含完整路径。然后在工作目录中搜索该文件,但没有找到。您也需要在那里指定正确的路径:

fotorandom = random.choice([
    os.path.join(path, x)  # <- new
    for x in os.listdir(path)  # <- better to avoid repeating dir
    if os.path.isfile(os.path.join(path, x))
])