client.run(TOKEN) 命令阻止其他集團 (client.run(TOKEN) command blocks other blocs)


問題描述

client.run(TOKEN) 命令阻止其他集團 (client.run(TOKEN) command blocks other blocs)

我寫了一個這樣的程序

client = commands.Bot(command_prefix='!')
@client.event
async def on_ready():
    user = await client.fetch_user(ID)
    await DMChannel.send(user, plus)
client.run(TOKEN)
print("Okay")

但是

print("Okay")

命令不起作用。你能幫幫我嗎?


參考解法

方法 1:

client.run(TOKEN) stops the code at that point. Any code underneath it will run only after the bot has been shutdown. Put any code that you want to run immediately above client.run(TOKEN)

方法 2:

That is due to the mechanics of how does asyncio works. In the nutshell, asyncio creates a loop, which is a blocking code meaning that nothing outside of it won't run until loop finishes, and inside of that loop asyncio makes coroutines work asynchronous, that just how architecture works, nothing to do about it.

Client.run() actually runs bot's asyncio loop and that's why nothing after that command works (at least until the point when you stop your bot).

To make your commands work you have to put them before calling Client.run() or which is better in my view ‑ to add them into the loop by calling Client.loop.create_task(your async function). Take into account, that function you pass into the create_task should be without brackets and that must be an async function.

And yes, you should call create_task before running the loop, or from the loop itself.

(by Dombili81Mathiaslangley)

參考文件

  1. client.run(TOKEN) command blocks other blocs (CC BY‑SA 2.5/3.0/4.0)

#discord #Python #bots #discord.py






相關問題

如何讓不和諧的機器人提及用戶? (How to make a discord bot mention a user?)

如何計算表情符號並在不和諧的機器人反應中顯示它們? (How to count the emojis and display them in a discord bot reaction?)

每當機器人啟動時,它就會開始向控制台發送垃圾郵件,沒有明顯的問題 (Whenever the bot starts up, it just starts spamming the console with no visible issue)

Discord.js ReferenceError:嵌入未定義 (Discord.js ReferenceError: embed is not defined)

在 Discord.js 中查找所有具有角色的成員 (Finding all members with a role in Discord.js)

啟動兩個 CPU 阻塞偵聽器並等待其中一個完成 (Starting two cpu blocking listeners and wait until one of them finishes)

discord.py - 猜謎遊戲無響應(更新) (discord.py - Guessing game no response (updated))

\n 換行符不保留代碼塊文本樣式 (\n Line break does not preserve code block text style)

如何在對不同消息做出反應時讓不和諧機器人刪除以前的角色? (How to make discord bot remove the previous role when reacting to a different message?)

一段代碼阻礙了我在學校的 Discord 機器人 (One piece of code hindering my Discord bot for School)

如何使不和諧機器人隨機跳過響應 (How to make discord bot randomly skip a response)

我應該放什麼行,這樣當我寫東西時,Discord 機器人會以我想要的方式響應(discord.py)? (What lines should I put so that when I write something the Discord bot responds in a way that I want (discord.py)?)







留言討論