python - Discord.py - 机器人不发送消息并且没有错误消息
问题描述
所以我正在为我的服务器制作自己的机器人,过了一段时间我终于找到了一个有效的自动角色和角色分配字符串。然后我继续为机器人添加另一个字符串,只是回复“你好”。一旦我添加角色命令将不再起作用。一旦我把它拿出来,它就会再次起作用。另一方面,我有一个 8ball 和一个掷骰子命令,可以使用和不使用 Hello 命令我不知道有什么问题......
@client.event
async def on_member_join(member):
channel = discord.utils.get(member.guild.channels, name='entrance')
await channel.send(f'Welcome {member.mention} to Dreamy Castle! \n Please make sure to read the rules!')
role = discord.utils.get(member.guild.roles, name="Peasants")
await member.add_roles(role)
@client.event
async def on_message(message):
if message.content.startswith('+acceptrules'):
member = message.author
role1 = discord.utils.get(member.guild.roles, name='The People')
await member.add_roles(role1)
@client.event #this is the hello command
async def on_message(message):
message.content.lower()
if message.content.startswith('Hello Conny'):
await message.channel.send('Hello!')
解决方案
对同一事件使用if
而elif
不是 2 个不同的功能。
此外,您可能需要commands.Bot
一个功能齐全的命令机器人。
@client.event
async def on_message(message):
if message.content.startswith('+acceptrules'):
member = message.author
role1 = discord.utils.get(member.guild.roles, name='The People')
await member.add_roles(role1)
elif message.content.lower().startswith("hello conny"):
await message.channel.send("Hello!")
await client.process_commands(message)
推荐阅读
- python - 将“datetime64”与其他列相乘的关键错误
- powerbi - PowerBI 计算列将字符串转换为可排序值
- javascript - 防止图像边框在切换时更改?
- java - 强制 ReactorClientHttpConnector 将 p12 证书与 httpClient 一起使用
- python - 以编程方式访问 IAP 背后的网站?
- api - Strapi Nextjs,使用一个嵌套类别构建导航
- android - Android 中的简单仪器测试失败(Dagger 注入问题)
- go - 在golang 1.17中使用原子交换指针更改指针接收器的值是否安全
- r - 在数据框中按组进行操作
- angular - Angular:无法按升序排列数组