我不知道将协程“ fetch_message
”放在哪里
我想编辑一条消息,但是旧方法不起作用
我尝试了旧方法,但是它告诉我它得到2个位置参数,而不是1个...
ersteller = ctx.message.author.id
await channel.send(f"<@{ersteller}>", embed=embed)
nachrichtchannel = ctx.message.channel
zerstörung = await nachrichtchannel.send("Selbstzerstörung in 3")
message = await client.fetch_message(zerstörung)
time.sleep(1)
print(message)
print(zerstörung)
await message.edit("Selbstzerstörung in 2")
message.edit()
time.sleep(1)
await message.edit("Selbstzerstörung in 1")
time.sleep(1)
await message.delete()
nachricht = ctx.message
await client.message.delete(nachricht)
它只是告诉我“ AttributeError: module 'client' has no attribute 'fetch_message'
”
这段代码是经过修正的消息的一部分,包括“ Selbstzerstörung in 3
”在内的所有内容均已发布,但编辑失败...
答案 0 :(得分:1)
我不确定当您误以为带有消息对象时,为什么要提取消息
zerstörung = await nachrichtchannel.send("Selbstzerstörung in 3")
您可以仅在该对象上调用edit
,而不必调用fetch_message
对于您的edit
错误,您必须传递content
作为参数。
似乎您正在尝试做一个计数器,所以这是一个示例:
@commands.command()
async def counter(self, ctx):
message = await ctx.channel.send("Timer 3")
time.sleep(1)
await message.edit(content="Timer 2")
time.sleep(1)
await message.edit(content="Timer 1")
time.sleep(1)
await message.delete()
编辑:您应该使用await asyncio.sleep(1)
避免任何代码中断。
答案 1 :(得分:0)
fetch_message方法是Abstract Base Class,更精确的是Messageable
。
根据文档
详细介绍可发送模型的常见操作的ABC 消息。
以下实现此ABC:
• TextChannel • DMChannel • GroupChannel • User • Member • Context
这意味着您可以使用任何这些类的对象调用fetch_message。
您可以直接在上下文中调用它
await ctx.fetch_message(id)
。
仅以ID开头的更一般的示例是:
# taken out of a on_raw_reaction_add() method
# assuming self.client is the bot
guild = self.client.get_guild(payload.guild_id)
channel = guild.get_channel(payload.channel_id)
message = await channel.fetch_message(payload.message_id)
但是,对于您的情况,应该使用BrainDeads建议