我目前正在做一个建议系统,但我有一个问题,我不知道如何编辑一个消息(嵌入)通过webhook发送,这是我的代码:
async def suggestion(ctx):
async with aiohttp.ClientSession() as session:
webhook = Webhook.from_url('...', adapter=AsyncWebhookAdapter(session))
embed = discord.Embed(color=color)
embed.add_field(name="Nouvelle suggestion !", value=ctx.message.content.lstrip(f"{prefix}suggest"))
embed.set_footer(text=f"""{ctx.message.author} • {datetime.now().strftime("%d %b %Y %H:%M:%S")}""",
icon_url=str(ctx.message.author.avatar_url))
await webhook.send(embed=embed, username=ctx.author.name, avatar_url=ctx.author.avatar_url)
对于添加React:
@bot.event
async def on_message(message):
if message.channel.id == 650397901893140481 and message.author.id not in [296687703851008002, 639138362673987584, 632575363830120448]:
await message.add_reaction("<:yes:710947936372129854>")
await message.add_reaction("<:neutral:710949706296983603>")
await message.add_reaction("<:no:710947944823652362>")
用于编辑消息:
@bot.command()
async def test(ctx, *args):
message = await ctx.channel.fetch_message(args[0])
embed = discord.Embed(color=color)
embed.add_field(name="Nouvelle suggestion !", value=args[1])
await message.edit(embed=embed)
错误:discord.ext.commands.errors.CommandInvokeError:命令引发异常:403 Forbidden(错误代码:50005):无法编辑由其他用户创作的邮件
4条答案
按热度按时间0ve6wy6x1#
也许这在你问这个问题的时候是不可能的,但现在是了。作为参考,我用Ruby做了一个例子,没有Python的例子,但它是一样的。最重要的部分是构建json并通过API发送它。
kkih6yb82#
我做了一个图书馆。一个不和谐的webhooks工具
名称:disWebhook
编辑:研究后。在discord.py文档
discord.Webhook
您可以像普通消息一样编辑和删除。
我没有测试代码,但它看起来很好
jecbmhm33#
我为我之前回答中的错误信息道歉。
Webhooks没有编辑消息的能力--它们只能发送消息。这意味着如果你想给予人一种你已经编辑了一封邮件的错觉,你需要删除邮件,然后用新的内容重新发送。
参考文献:
discord.Webhook()
nhaq1z214#
有可能;重要的是执行PATCH请求而不是POST请求。而不是webhook URL,用途:“WEBHOOK_URL/messages/MESSAGE_ID”消息ID可从从发送到webhook接收的返回消息对象中获得,当使用URL“WEBHOOK_URL?wait=true”
我花了很长时间才发现,但它是在PHP中,也许它对Python的工作方式不同。