我正在处理的报告命令有问题。每当我在不和谐的服务器上运行命令时,就会出现错误“ TypeError:on_message()缺少1个必需的位置参数:'Member'”。如果有人知道如何解决此问题,您能告诉我吗?感谢您抽出宝贵的时间阅读该文章。
# bot.py
from discord import Member
import os
import discord
from dotenv import load_dotenv
load_dotenv()
DISCORD_TOKEN = ''
client = discord.Client()
@client.event
async def on_ready():
print(f'{client.user} has connected to Discord!')
@client.event
async def on_message(message, Member):
Member = discord.Member(Member)
if message.author == client.user:
return
if message.content.startswith('$report ', Member.mention):
Sends = 'That user has been reported!'
await message.channel.send(Sends)
client.run(DISCORD_TOKEN)
答案 0 :(得分:0)
我可以看到您是discord.py的新手。首先,on_message函数不接受成员。它只需要消息。当您将事件添加到代码中时,您总是要检查Event Reference并检查该事件的参数。您不能添加或删除参数。对于这种情况,您的代码将像这样
@client.event
async def on_message(message)
要获取会员,您将使用:
member = message.author
我也建议您使用命令
from discord.ext import commands
这会容易得多,您可以添加自己的参数。我已经举例说明了您在命令中使用on_message函数的情况
@client.command
async def report(ctx, member : discord.Member, reason=None)
await ctx.send(f"Reported {member.mention} for {reason}")
还请记住,如果您具有on_message函数,则除非最后使用bot.process_commands,否则您的命令将不起作用。阅读有关如何操作的常见问题解答。这是链接: 为什么on_message会使我的命令停止工作? https://discordpy.readthedocs.io/en/latest/faq.html#why-does-on-message-make-my-commands-stop-working