如何在命令中创建一个自定义不和谐机器人@某人@某人?

Posted

技术标签:

【中文标题】如何在命令中创建一个自定义不和谐机器人@某人@某人?【英文标题】:How do I make a custom discord bot @ someone that a person @ed in the command? 【发布时间】:2021-09-12 12:11:38 【问题描述】:

当我输入 !best 时,它会显示我的用户名,如果我使用 !best @example 之类的相同命令 @ 其他人并输入 @nottheexample 也会这样做

if message.content.startswith('!best'):
        await message.channel.send(message.author.mention)

【问题讨论】:

这能回答你的问题吗? How do I mention a user using user's id in discord.py? 不,我没有尝试过@Dominik 【参考方案1】:

要提及用户,您必须事先定义它。你可以这样做:

user = message.mentions[0]

要提及用户,您可以使用f-strings 或format

基于上面的代码,这里是一个例子:

@client.event # Or whatever you use
async def on_message(message):
    user = message.mentions[0]
    if message.content.startswith('!best'):
        await message.channel.send("Hello, ".format(user.mention))

请注意,代码仅在您同时指定user 时才有效。但是,如果您想以不同方式处理,可以添加更多 ifelse 语句。

【讨论】:

不工作它会出现错误:Ignoring exception in on_message Traceback (most recent call last): File "/opt/virtualenvs/python3/lib/python3.8/site-packages/discord/client.py", line 343, in _run_event await coro(*args, **kwargs) File "main.py", line 60, in on_message user = message.mentions[0] IndexError: list index out of range replit.com/join/urbrvhrrzi-cameronbutcher1 这里是完整代码 @CameronButcher "请注意,代码仅在您同时指定用户时才有效"。你也不能有多个on_message事件并且必须注意缩进【参考方案2】:

message.author.mention 总是提到邮件的作者

你可以通过多种方式解决这个问题

    发送后面的任何内容!best
if message.content.startswith('!best'):
    args = message.content.split('!best ')
    if len(args) > 1:
        await message.channel.send(args[1])
    else:
        await message.channel.send(message.author.mention)
    与数字 1 相同,但添加一些检查 !best 背后的东西是否是真实成员 - 请参阅文档中的 Utility Functions
member = discord.utils.find(lambda m: m.name == args[1], message.guild.members)

member = discord.utils.get(message.guild.members, name=agrs[1])
    使用Commands - 我真的推荐这个
from discord.ext import commands

bot = commands.Bot(command_prefix='!')

@bot.command()
async def best(ctx, member: discord.Member = None):
    if member is None:
        member = ctx.author
    await ctx.send(member.mention)

【讨论】:

第一个有效但我需要它做的是当我说 >example0: !best @example1> 我想让它说> @example1 我不明白,它是否有效? ? 好的,您能否编辑您的问题,对输出的外观进行更多解释(也许添加一些屏幕截图)? :D

以上是关于如何在命令中创建一个自定义不和谐机器人@某人@某人?的主要内容,如果未能解决你的问题,请参考以下文章

如何让一个不和谐的 js 机器人在某人获得某个角色后向他发送消息

不和谐.JS |发布特定链接后自动踢某人?

我正在尝试让不和谐的机器人根据某人加入服务器后的时间赋予角色

Discord.py:如何提取布尔值以判断某人是不是静音

如何在 discord.py 中创建密码检查命令 [关闭]

如何使用不和谐机器人从不和谐频道随机发布文本?