如何让斜杠命令机器人不回复消息

Che*_*WOV 1 command slash discord discord.py

@slash.slash(name=\'spam\', description=\'I will spam your content for times!\', options=optionsspam, guild_ids=[847769978308526090])\nasync def spam(ctx, text: str, times: int="15"):\n  if bool(times):\n    Times = 15\n  else:\n    Times = times\n  \n  for i in range(int(Times)):\n    await ctx.send(text)\n    await asyncio.sleep(.7)\n
Run Code Online (Sandbox Code Playgroud)\n

结果是:\n\n它不断回复机器人发送的第一条消息。我不\xe2\x80\x99不希望机器人回复。我希望它只发送一条正常的消息。如何?

\n

小智 5

交互(斜杠命令)始终需要对用户进行直接响应。如果不使用ctx.send(str),交互将会失败。

你有 2 个选项可以让它看起来像是你没有响应斜杠命令

隐藏回复

您可以发布隐藏答案ctx.send('ok', hidden=True),然后将有意的消息发送到频道中ctx.channel.send(str)

这将使初始的“ok”仅对调用用户可见,并且服务器的所有其他成员既不会看到该请求,也不会看到第一个响应。

删除回复

您的第二个选择是在很短的时间 () 后自动删除答案ctx.send('ok', delete_after=1),然后将正常消息发送到频道中ctx.channel.send(str)

推迟响应

defer如果您无法在调用后 3 秒内做出响应,您可能需要做出响应。必须使用与您的 future 相同的属性来调用推迟交互(ctx.defer(hidden=True)或) 。ctx.defer()hiddenctx.send()

如果您想隐藏您的响应ctx.send('ok', hidden=True),则需要在同一状态下推迟ctx.defer(hidden=True)