Discord.py-以不同的名称或用户发送消息
我一直在开发一个机器人,有一个小请求,我不知道该怎么做。
当用户输入他们的消息时,机器人会检查消息是否包含预先确定的关键字(为了把一切都放在眼里,我正在使用一个已经工作的 BOT 的例子),替换这部分(例如表情符号)并再次发布消息,在发布消息的用户名下。(我不想完全这样做,我只想知道如何像 Animated Emojis bot一样“以其他用户的身份发布” )。
它是这样工作的:
图像示例
同样不知何故,创建的用户不是有效用户,因为他们没有任何角色或可以发送消息。如果您单击他们的个人资料(在聊天中),则会发生以下情况:
无效的个人资料
正如我之前所说,这在某种程度上是可能的(动画表情符号机器人就是其中一个例子),我想知道我怎么能做这样的事情。
提前致谢,希望你有美好的一天!
回答
我找到了一种简单的方法,看起来就像您在谈论的那样,只需使用用户名或使用该命令“充当”的另一个用户创建一个 webhook,将创建一个包含这些详细信息的 Discord webhook,然后删除该 webhook ,但保留消息。尝试这个。
@client.command()
async def act(ctx, member: discord.Member, *, message=None):
if message == None:
await ctx.send(
f'Please provide a message with that!')
return
webhook = await ctx.channel.create_webhook(name=member.name)
await webhook.send(
str(message), username=member.name, avatar_url=member.avatar_url)
webhooks = await ctx.channel.webhooks()
for webhook in webhooks:
await webhook.delete()
编辑:网络钩子是一种通信类型,可用于访问和自动化您的消息,以将数据更新发送到您的 Discord 文本频道。
在这种情况下,当从命令发送消息时,用户显示为机器人,但其他一切都来自用户。NQN bot 使用这种精确的方法