如何使斜线命令机器人不回复消息
How to make a slash command bot do not reply messages
@slash.slash(name='spam', description='I will spam your content for times!', options=optionsspam, guild_ids=[847769978308526090])
async def spam(ctx, text: str, times: int="15"):
if bool(times):
Times = 15
else:
Times = times
for i in range(int(Times)):
await ctx.send(text)
await asyncio.sleep(.7)
结果是:
它会不断回复机器人发送的第一条消息。我不希望机器人回复。我希望它只发送一条普通消息。怎么样?
您可以获取频道并直接向频道发送消息。但是,您必须使用 ctx.defer()
之类的东西,这样交互才不会显示为失败。
@slash.slash(name='spam', description='I will spam your content for times!', options=optionsspam, guild_ids=[847769978308526090])
async def spam(ctx, text: str, times: int="15"):
channel = ctx.channel
if bool(times):
Times = 15
else:
Times = times
for i in range(int(Times)):
if channel != None:
await channel.send(text)
await asyncio.sleep(.7)
await ctx.send("Done")
交互(斜杠命令)总是需要对用户的直接响应。如果不使用ctx.send(str)
,交互会失败
你有 2 个选项可以让它看起来像你没有响应斜线命令
隐藏回复
您可以post隐藏答案ctx.send('ok', hidden=True)
,然后将有意向的消息发送到频道ctx.channel.send(str)
。
这将使初始 'ok' 仅对调用用户可见,服务器的所有其他成员既不会看到请求,也不会看到第一个响应。
删除回复
您的第二个选择是在很短的时间后 (ctx.send('ok', delete_after=1)
) 自动删除答案,然后在频道 ctx.channel.send(str)
.
中发送一条正常消息
推迟响应
如果您无法在调用后 3 秒内做出响应,则可能需要 defer
您的响应。必须使用与您未来 ctx.send()
.
相同的 hidden
属性来调用延迟交互(ctx.defer(hidden=True)
或 ctx.defer()
)
如果您想隐藏您的回复ctx.send('ok', hidden=True)
,您需要在相同状态下推迟ctx.defer(hidden=True)
。
@slash.slash(name='spam', description='I will spam your content for times!', options=optionsspam, guild_ids=[847769978308526090])
async def spam(ctx, text: str, times: int="15"):
if bool(times):
Times = 15
else:
Times = times
for i in range(int(Times)):
await ctx.send(text)
await asyncio.sleep(.7)
结果是: 它会不断回复机器人发送的第一条消息。我不希望机器人回复。我希望它只发送一条普通消息。怎么样?
您可以获取频道并直接向频道发送消息。但是,您必须使用 ctx.defer()
之类的东西,这样交互才不会显示为失败。
@slash.slash(name='spam', description='I will spam your content for times!', options=optionsspam, guild_ids=[847769978308526090])
async def spam(ctx, text: str, times: int="15"):
channel = ctx.channel
if bool(times):
Times = 15
else:
Times = times
for i in range(int(Times)):
if channel != None:
await channel.send(text)
await asyncio.sleep(.7)
await ctx.send("Done")
交互(斜杠命令)总是需要对用户的直接响应。如果不使用ctx.send(str)
,交互会失败
你有 2 个选项可以让它看起来像你没有响应斜线命令
隐藏回复
您可以post隐藏答案ctx.send('ok', hidden=True)
,然后将有意向的消息发送到频道ctx.channel.send(str)
。
这将使初始 'ok' 仅对调用用户可见,服务器的所有其他成员既不会看到请求,也不会看到第一个响应。
删除回复
您的第二个选择是在很短的时间后 (ctx.send('ok', delete_after=1)
) 自动删除答案,然后在频道 ctx.channel.send(str)
.
推迟响应
如果您无法在调用后 3 秒内做出响应,则可能需要 defer
您的响应。必须使用与您未来 ctx.send()
.
hidden
属性来调用延迟交互(ctx.defer(hidden=True)
或 ctx.defer()
)
如果您想隐藏您的回复ctx.send('ok', hidden=True)
,您需要在相同状态下推迟ctx.defer(hidden=True)
。