如何在discord.py中复制、编辑和替换消息

问题描述 投票:0回答:1

我正在尝试制作一个不和谐的机器人,它将获取用户发布的 Twitter 链接,复制它,添加 VX 并发布它,以便它正确嵌入,并删除原始消息。

我似乎无法找出让机器人复制文本的最佳方法,在“twitter”之前添加“vx”并发布该文本。 就像这样 https://twitter.com/i/status/xxxx > https://vxtwitter.com/i/status/xxxx

这就是我所拥有的

@bot.event
async def on_message(message):
  if message.content == 'https://twitter.com':
    messages=await message.channel.send("https://vxtwitter.com")
    await asyncio.sleep(INT)
    await messages.edit(content="https://vxtwitter.com")

我似乎也无法让 ctx 在我的代码中工作,我不确定它是否会帮助我让它工作。 如有任何帮助,请提前致谢。

python discord discord.py
1个回答
0
投票

为了解决您的问题,您需要浏览一下内容的长度。幸运的是,您知道放置“vx”的确切位置。

代码:

@bot.event
async def on_message(message: discord.Message):
    if "https://twitter.com/" in message.content:
        new_message = message.content[:8] + "vx" + message.content[8:]
        await message.channel.send(new_message)
        await message.delete()
    await bot.process_commands(message)

说明:

您知道要将

"vx"
放在
"twitter.com/"
之前和
"https://"
之后。在
"twitter.com/"
之后,您不知道用户将输入多少个字符。所以我们使用固定长度的
"https://"
。那是8个字母。

对于新消息,我们需要

https:// + vx + twitter.com/...
,因此我们包含原始消息的前 8 个字母:
message.content[:8]
,然后添加
"vx"
,然后添加原始消息的其余部分:
message.content[8:]

[:8]
表示第 8 个字母之前的所有内容以及第 8 个字母本身

[8:]
表示第8个字母之后的所有内容

bot.process_commands(message)
是针对
ctx
问题的。如果您不将此行放入
on_message
事件中,机器人将在尝试使用该命令作为消息执行某些操作时陷入困境。使用这一行,它将首先检查您的消息是否是命令。

我想就是这样。如果您有疑问,我会尽力解答。

© www.soinside.com 2019 - 2024. All rights reserved.