如何将 ctx 参数传递给自己的函数?

How to pass ctx argument to own function?

这不完全是我的代码,而是类似的例子:
函数体:

async def fun(fun_word)
  ctx.send(fun_word)

然后主要代码:

@client.event
async def on_message(message):
msg = message.content
if msg=="pancake"
  fun(word)

我尝试了很多方法来将 ctx 参数传递给函数,但其​​中 none 有效。
有解决办法吗?

等待函数

您需要await该功能。 “调用”协程实际上什么都不做。

async def fun(fun_word):
    ctx.send(fun_word)
@client.event
async def on_message(message):
    msg = message.content
    if msg == "pancake":
        await fun(word)

即时创建上下文(尽管不完整)

查看文档:https://discordpy.readthedocs.io/en/latest/ext/commands/api.html?highlight=context#discord.ext.commands.Context。您可以根据给定的消息创建自己的上下文。

async def fun(ctx, fun_word):
    ctx.send(fun_word)
@client.event
async def on_message(message):
    msg = message.content
    if msg == "pancake":
        await fun(commands.Context(message=message), word)

正常发送消息

这是实现您似乎想要做的事情的最简洁的方法。而不是强制 ctx,只需通过 message.channel 正常发送消息即可。事实上,ctx.send实际上只是这个的别名。

@client.event
async def on_message(message):
    msg = message.content
    if msg == "pancake":
        await message.channel.send(word)