You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python调用自定义async函数报错缺少parachannel必填位置参数怎么解决

报错触发原因
  • 你定义的find函数要求传入3个必选位置参数:ctx、user、parachannel,但实际调用时仅传入了user和频道ID两个参数,缺失第一个参数ctx,因此Python抛出缺少必填参数parachannel的类型错误。
  • 额外问题:find是异步函数,直接同步调用无法获取返回值,只会得到协程对象,必须配合await关键字调用。
修复方案

首先观察到你的find函数内部完全没有用到ctx参数,最优修复方式是直接删除函数定义中没用的ctx参数,同时调用时添加await关键字:

# 修正后的函数定义:删除无用的ctx参数
async def find(user, parachannel):
    user = int(user)
    parachannel = int(parachannel)
    funchannel = bot.get_channel(parachannel)
    fun_guild = bot.get_guild(880108797820026881)
    memberuser = fun_guild.get_member(user)
    fun_calc = 0
    async for message in funchannel.history(limit=10):
        if message.author == memberuser:
            fun_calc = fun_calc + 1
    return fun_calc

# 修正后的调用代码:添加await关键字
gen_calc = await find(user, 880123663318409277)
print(gen_calc)

如果你需要保留ctx参数,只需要在调用时传入当前命令的ctx对象即可,调用代码修改为:

gen_calc = await find(ctx, user, 880123663318409277)

内容的提问来源于stack exchange,提问作者Mushtaq Mahar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 22:36:02