我最近开始使用Discord.py。 我的问题是:我如何标记随机用户,例如,如果您在聊天中输入!tag?我还没有找到答案。
if message.content.startswith('+best'):
userid = '<@ # A RANDOM ID #>'
yield from client.send_message(message.channel, ' : %s is the best ' % userid)
谢谢
答案 0 :(得分:1)
这就是我要做的:
random.choice
从列表中选择一个随机用户这是实现:
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-rewrite
(link 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}')