缺少1个必需的位置参数:“ ctx”

时间:2020-10-18 08:11:07

标签: python discord.py

我试图让我的机器人在用户对一条消息做出反应后扮演一个角色,但是每次遇到相同的错误时,我都会让它扮演一个角色。我不明白错误的含义。有人可以帮忙吗? 这是代码:

import discord
from discord.ext import commands
from discord import Member
from discord.ext.commands import has_permissions
from discord.ext import tasks


#sets the command prefix
Client = commands.Bot(command_prefix = "!")

#print Nuggie is ready in the console when the bot is activeted
@Client.event
async def on_ready():
    print("Bot is ready")

@Client.event
async def on_ready(ctx):
    myRole = Role.id("Member")
    channel = discord.utils.get(ctx.guild.channels, name=input("What is the name of the channel?  "))
    channel_id = channel.id
    channel = Client.get_channel(channel_id)
    role = discord.utils.get(message.server.roles, name=myRole)
    message = await Client.send_message(channel, "React with the tick to get access to the server!")
    while True:
        reaction = await Client.wait_for_reaction(emoji="✔", message=message)
        await Client.add_roles(reaction.message.author, role)

我得到的错误是:

Ignoring exception in on_ready
Traceback (most recent call last):
  File "C:\Users\me\AppData\Local\Programs\Python\Python38\lib\site-packages\discord\client.py", line 333, in _run_event
    await coro(*args, **kwargs)
TypeError: on_ready() missing 1 required positional argument: 'ctx'

1 个答案:

答案 0 :(得分:0)

函数on_ready定义了两次,定义了第二个时,第一个被消除。错误告诉您函数调用要求将参数传递给它(ctx)

阅读不一致的文档:https://discordpy.readthedocs.io/en/latest/quickstart.html#a-minimal-bot。必须定义on_ready方法,不带任何参数。