【问题标题】:Discord Python Bot Without RunningDiscord Python Bot 没有运行
【发布时间】:2021-03-31 17:47:37
【问题描述】:

我是 discord.py 的新手,想了解一些功能。如何在不运行机器人的情况下执行功能?你看,我想从其他上下文中调用一些机器人函数。我不喜欢我的机器人读取事件或类似的东西,例如,只要我的程序调用它就创建一个语音通道。我怎样才能实现这样的功能?也许我应该考虑为 discord API 编写自定义处理程序,例如 requests lib?

【问题讨论】:

    标签: python-3.x discord.py


    【解决方案1】:

    您的机器人必须登录 Discord 才能使用 api 进行操作。

    我建议您在不同的线程中运行机器人并从主胎面运行 coro。 像这样:

    这是你的机器人所在的文件:

    from discord.ext.commands import Bot
    import threading
    import discord
    
    client = Bot(command_prefix="!")
    
    
    
    @client.event
    async def on_ready():
        print("Ready")
    
    
    async def create_voice(guild_id):
        await client.wait_until_ready() #  Waits for bot is logged in and the cache is loaded
        guild = client.get_guild(guild_id)
        await guild.create_voice_channel("Hallo")
        print("Done")
    
    
    
    thread = threading.Thread(target=client.run, args=["Token"])
    thread.start()
    

    主文件:

    import bot_run
    import asyncio
    
    loop = asyncio.get_event_loop()
    
    asyncio.run_coroutine_threadsafe(bot_run.create_voice(guild_id), loop)
    

    希望这会有所帮助:D

    【讨论】:

    • 非常感谢。我正在考虑线程外解决方案,但是据我所知,它在 discord.py 中不可用
    • @ftelnov 这对你有用吗?我自己试过了,效果很好。我使用 Python3.7 和 discord.py 1.5.1 。我不确定你的评论看起来不适合你^^"。如果我错了,对不起。
    • 是的,它对我来说很好用。我对线程的额外资源有点难过:)
    猜你喜欢
    • 2021-07-17
    • 2020-05-28
    • 1970-01-01
    • 2018-07-21
    • 2021-07-13
    • 2021-07-21
    • 2020-09-12
    • 2021-12-16
    相关资源
    最近更新 更多