Python 尝试使用discord.py使bot以命令发起人的身份发送消息

Python 尝试使用discord.py使bot以命令发起人的身份发送消息,python,discord,discord.py,bots,Python,Discord,Discord.py,Bots,我正在尝试在discord上创建一个机器人,用音调指示器(例如,/s表示讽刺)标记东西。这个项目一开始只是一个库,但后来我意识到我可以让它将音调指示器作为参数附加到消息的末尾。然而,我只能让机器人自己发送,这很令人失望,因为它会中断对话流。我正在使用python编写它。这是我的密码: 导入不一致 从discord_slash导入SlashCommand,SlashContext#导入新安装的库。 client=discord.client(intents=discord.intents.all(

我正在尝试在discord上创建一个机器人,用音调指示器(例如,/s表示讽刺)标记东西。这个项目一开始只是一个库,但后来我意识到我可以让它将音调指示器作为参数附加到消息的末尾。然而,我只能让机器人自己发送,这很令人失望,因为它会中断对话流。我正在使用python编写它。这是我的密码:

导入不一致
从discord_slash导入SlashCommand,SlashContext#导入新安装的库。
client=discord.client(intents=discord.intents.all())
slash=SlashCommand(客户端,sync_commands=True)#通过客户端声明slash命令。
帮会id=[guild id]#将您的服务器id放入此数组。
@客户端事件
_ready()上的异步定义:
打印(“准备就绪!”)
@slash.slash(name=“j”,description=“joking”,guild\u id=guild\u id)
async def j(ctx:SlashContext,message:str):#定义一个名为“ping”的新“上下文”(ctx)命令
等待ctx。响应(eat=True)
send_message=wait ctx.send(f“{message}/j”)
def检查(消息):
返回message.author.id==ctx.author\u id
尝试:
回答=等待机器人。等待('message',check=check,timeout=60.0)
除asyncio.TimeoutError外:
等待ctx.send(“你花了很长时间才回答…”,hidden=True)
其他:
#对答案做些什么(转换为音调指示器)
通过
client.run(“bot令牌”)

我知道我实际上不需要最后一部分的任何内容,但有人建议我将其作为一种解决方案,使其成为用户的ID。它什么也不返回。有人知道如何让它以输入命令的用户的身份发送,或者将其自身伪装成这样吗?

您可以使用webhooks进行此操作

#在您的命令中
guild=client.get\u频道(ctx.channel\u id)
如果通道为无:
#这里出错
返回
webhooks=filter(lambda x:x.user==client.user,wait channel.webhooks())#只获取我们创建的webhooks
如果len(webhooks)==0:
webhook=wait channel.create_webhook(name='something')
else:webhook=webhooks[0]
等待webhook.send(内容,username=ctx.author.username,avatar=ctx.author.avatar\u url
参考资料:

所以我尝试在
wait ctx.response(eat=True)
一行之后实现这个解决方案,但发现它只是吃掉了消息,然后什么也没有发生。我认为这是某种链接问题,所以我尝试更改
wait webhook.send(content,username=ctx.author.username,avatar=ctx.author.avatar\u url)
等待webhook.send(f“{meesage}/j”,username=ctx.author.username,avatar=ctx.author.avatar\u url)
。机器人似乎只是在吃消息,而没有给我任何输出。我知道python对顺序很挑剔,所以我的位置有问题还是其他问题?我的错,混淆了
discord\u slash
的ctx和
discord.py
的ctx。现在更新答案