首页 > 解决方案 > 设置循环以检测 discord.py 中的按键

问题描述

这些天我试图在我的代码中使用按键检测,似乎很难将按键检测功能推送到 discord.py 机器人循环功能

显然这是我一直在尝试做的

    import pyscreenshot as ps
    import keyboard
    from PIL import Image
    from discord.ext import commands
    client=commands.Bot("!")
    async def keypress_detector():
        while True:
            try:  
                if keyboard.is_pressed('['):#if key '[' is pressed 
                    im=ps.grab()
                    im.save("screenie.png")
                    image_obj = Image.open("screenie.png")
                    cropped_image = image_obj.crop((130, 445, 580, 812))
                    cropped_image.save("updated.png")
                    await client.send_file(client.get_channel('id-here'), "updated.png")
                else:
                    pass
            except Exception as ex:
                return print(str(ex))
    if __name__ == "__main__":
       client.loop.create_task(keypress_detector())   
       client.run("TOKEN")

如果我只想正常运行该功能(在机器人循环之外,尽管它不会将屏幕截图发送到频道),该功能工作得很好,我希望机器人在我按下某个键时将屏幕截图发送到聊天室。如果有其他方法,请告诉我。

更新

解决了,前几次没用,现在可以了。

标签: pythonpython-3.xdiscord.py

解决方案


由于while True导致非异步的无限循环(discord.py 依赖于此),您将遇到问题。我不确定您要实现的目标是否在 python 领域或任何语言领域中实际上是可能的。我也不确定您要在这里实现什么,如果您知道我错了,请纠正我。


推荐阅读