python - TypeError:on_message()缺少1个必需的位置参数:'Member' discord.py
问题描述
我正在处理的报告命令有问题。每当我在我的不和谐服务器上运行命令时,都会出现错误“TypeError: on_message() missing 1 required positional argument: '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)
解决方案
我可以看到你是 discord.py 的新手。首先,on_message 函数不接受成员。它只需要消息。当您向代码中添加事件时,您总是希望检查事件参考并检查该事件的参数。您不能添加或删除参数。对于这种情况,您的代码将像这样开始
@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
推荐阅读
- node.js - 无法在 expo-react-native 应用程序上运行“expo start”,权限问题
- delphi - 如何在 paslibvlc 视频播放器中禁用活动音轨
- docker - 忽略 .dockerignore 中的所有 .git 文件夹
- java - 无法从 EditText 获得正确的浮点值
- python - 带有日期和 sqlite 的 QSortFilterProxyModel
- azure - 如何建立与 Azure 虚拟机可用性集的 RDP 连接?
- wpf - 如果 DockPanel.LastChildFill=true,WPF 文本框将不会填充
- css - 从左到右移动侧栏
- jsf - 提交 JSF 页面时未调用 UIInput 设置方法
- ios - 如何使用 Swift 4.2 在 TableView 中为 JSON 可编码结构数据创建搜索功能?