Discord.py-标记随机用户

时间:2019-03-13 18:55:30

标签: discord discord.py

我最近开始使用Discord.py。 我的问题是:我如何标记随机用户,例如,如果您在聊天中输入!tag?我还没有找到答案。

 if message.content.startswith('+best'):
        userid = '<@ # A RANDOM ID #>'
        yield from client.send_message(message.channel, ' : %s is the best ' % userid)

谢谢

4 个答案:

答案 0 :(得分:1)

这就是我要做的:

  1. 生成服务器中的用户列表
  2. 使用random.choice从列表中选择一个随机用户
  3. 使用该消息提及该用户(或者,如果您愿意,可以手动执行)

这是实现:

from random import choice

if message.content.startswith('+best'):
    user = choice(message.channel.guild.members)
    yield from client.send_message(message.channel, ' : %s is the best ' % user.mention)

答案 1 :(得分:1)

详细阐述美学的答案,您可以执行以下操作:

import random

if message.content.startswith('+best'):
    channel = message.channel
    randomMember = random.choice(channel.guild.members)
    await channel.send(f'{randomMember.mention} is the best')

请注意,该代码位于discord.py的重写版本中,而不是异步版本-如果您使用的是异步版本,我建议您迁移为重写,以支持discord.py异步版本已经停止了。要了解更多信息,请参阅here上的迁移文档。

让我知道您是否需要帮助-编码愉快!

答案 2 :(得分:0)

首先,我建议您安装discord.py-rewritelink here),因为它更高级。

然后,我建议您使用@client.command()装饰器创建机器人命令,如下所示:

@client.command()
async def testcommand(ctx):
    pass

现在您已经完成了两件事,有几种方法可以做到。例如,如果您不希望该机器人提及命令调用程序或其他机器人,则可以编写:

from random import choice
from discord.ext import commands

@client.command()
@commands.guild_only()
async def tag(ctx):
    try:
        await ctx.send(choice(tuple(member.mention for member in ctx.guild.members if not member.bot and member!=ctx.author)))
    except IndexError:
        await ctx.send("You are the only human member on it!")

如果您不希望该机器人提及其他机器人,但可以提及命令调用程序,请使用:

from random import choice
from discord.ext import commands

@client.command()
@commands.guild_only()
async def tag(ctx):
    await ctx.send(choice(tuple(member.mention for member in ctx.guild.members if not member.bot)))

如果您希望机器人提及任何行会成员,无论是人类还是机器人,请使用:

from random import choice
from discord.ext import commands

@client.command()
@commands.guild_only()
async def tag(ctx):
    await ctx.send(choice(tuple(member.mention for member in ctx.guild.members)))

答案 3 :(得分:0)

我玩了一会儿,让它起作用,你可以尝试一下。

@client.command(pass_context=True)
async def hug(ctx):
    user = choice(ctx.message.channel.guild.members)
    await ctx.send(f'{ctx.message.author.mention} hugged {user.mention}')