我只是用 python 编写我自己的 discord bot,我有一个 kill 命令。它所做的只是当您输入 *kill
并提及某人 (*kill @goose.mp4
) 时,它会为您提供一个关于如何杀死他们的随机场景,类似于 Dank Memer 机器人。我正在尝试获取提到的用户的 ID,这将是该函数的第二个参数。但我被困住了。在阅读 API 并多次搜索之后,我只知道如何获取作者的 ID 并使用机器人 ping 他们,而不是作者提到的人。
这是我目前使用的代码。其中一个变量的值仅用于测试目的。
if message.content.startswith('*kill'):
print("kill command recieved")
kill_mention_killer = message.author.mention
kill_mention_victm = 'some guy'
print(kill_mention_killer)
kill_responses = [kill_mention_killer + ' kills ' + kill_mention_victim]
kill_message = kill_responses[random.randint(-1, len(kill_responses) -1)]
await message.channel.send(kill_message)
答案 0 :(得分:3)
您当前执行此命令的方式不允许您获取参数。如果您尝试发出这样的命令:*kill @user
,那么您将需要能够获取提到的用户(这是您的问题)。操作方法如下:
第一步
import discord, random
from discord.ext import commands
这些导入非常重要。他们将被需要。
第二步
client = commands.Bot(command_prefix='*')
这将实例化整个代码中使用的 client
。现在进入您将实际发出命令的部分。
@client.command()
async def kill(ctx, member: discord.Member): # This command will be named kill and will take two arguments: ctx (which is always needed) and the user that was mentioned
kill_messages = [
f'{ctx.message.author.mention} killed {member.mention} with a baseball bat',
f'{ctx.message.author.mention} killed {member.mention} with a frying pan'
] # This is where you will have your kill messages. Make sure to add the mentioning of the author (ctx.message.author.mention) and the member mentioning (member.mention) to it
await ctx.send(random.choice(kill_messages))
就是这样!这就是你如何制作标准的 kill 命令。只需确保将 kill_messages
数组更改为您想要的任何消息。
答案 1 :(得分:0)
if message.content.startswith('*kill'):
#Mentioned or not
if len(message.mentions) == 0:
#no one is mentioned
return
pinged_user = message.mentions[0]
killer_user = message.author
kill_messages = [
...
]
await ctx.send(random.choice(kill_messages))
这里我只是使用 message.mentions 来查找消息中是否提及任何有效用户以及是否提及!所有提及都将在 message.mentions list
中,因此我在 message.mentions[0]
中第一次提及该消息。然后你可以对提到的用户对象做任何事情。