首页 > 解决方案 > 我的 c!givecookie {member} 命令中缺少什么?不和谐机器人 python

问题描述

因此,由于某种原因,存在问题c!givecookie {member}。我在后面提到了命令@client.command()。当我在不和谐中键入命令(c!givecookie)时,它没有响应。任何男孩都可以帮忙吗?

import os
import random
from replit import db
from keep_alive import keep_alive
from discord.ext import commands

my_secret = os.environ['TOKEN']

def update_encouragements(encouraging_msg):
  if "encouragements" in db.keys():
    encouragements = db["encouragements"]
    encouragements.append(encouraging_msg)
    db["encouragements"] = encouragements
  else:
    db["encouragements"] = [encouraging_msg]

def delete_encouragment(index):
  encouragements = db["encouragements"]
  if len("encouragements") > index:
    del encouragements[index]
    db["encouragements"] = encouragements

if "c!responding" not in db.keys():
  db["c!responding"] = True

client = commands.Bot(command_prefix = "c! ")

@client.command()
async def givecookie(ctx, member: commands.MemberConverter):
  await ctx.send(f"Hello, {member.mention}, here is your cookie~ :cookie:")

@client.event
async def on_ready():
    print('We have logged in as {0.user}' .format(client))

async def on_message(message):
  if message.author == client.user:
    return

  if db["c!responding"]:
    options = starter_encouragements
    if "encouragements" in db.keys():
      options = options + list(db["encouragements"])

    if any(word in message.content for word in sad_words):
      await message.channel.send(random.choice(options))

  if message.content.startswith("c!new"):
    encouraging_msg = message.content.split("c!new", 1)[1]
    update_encouragements(encouraging_msg)
    await message.channel.send("New encouraging message added!")

  if message.content.startswith("c!delete"):
    encouragements = []
    if "encouragements" in db.keys():
      index = int(message.content.split("c!delete",1)[1])
      delete_encouragment(index)
      encouragements = db["encouragements"]
    await message.channel.send(encouragements)

  if message.content.startswith("c!list"):
    encouragements = []
    if "encouragements" in db.keys():
      encouragements = db["encouragements"]
    await message.channel.send(encouragements)

  if message.content.startswith("c!responding"):
    value = message.content.split("c!responding ",1)[1]

    if value.lower() == "true":
      db["c!responding"] = True
      await message.channel.send("Responding is on!")
    else:
      db["c!responding"] = False
      await message.channel.send("Responding is off!")

keep_alive()
client.run(my_secret)

标签: pythondiscorddiscord.pybots

解决方案


该错误在您的on_message事件中,因为它将命令作为正常消息来解决此问题,您只需在事件await client.process_commands(message)结束时添加on_message

答案取自这里


推荐阅读