我只是用python编程我自己的不和谐机器人,我有一个杀死命令。它所做的只是,当你键入*杀死
并提到某人(*杀死@goose.mp4
)时,它会给你一个随机的场景,告诉你如何杀死他们,类似于Dank Memer机器人。我试图得到提到的用户的ID,这将是函数的第二个参数。但是我被卡住了。在阅读了应用编程接口并多次搜索后,我只得到了如何获取作者的身份并将他们与机器人联系起来的信息,而不是作者提到的那个人。
这是我目前正在使用的代码。其中一个变量的值仅用于测试目的。
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)
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列表
中,所以我通过message.mentions[0]
对消息进行了第一次提及。
您当前执行此命令的方式将不允许您获取参数。如果您试图发出这样的命令:*kill@user
,那么您需要能够获得提到的用户(这是您的问题)。以下是您的操作方法:
第一步
import discord, random
from discord.ext import commands
这些进口产品非常重要。它们是需要的。
第二步
client = commands.Bot(command_prefix='*')
这将实例化整个代码中使用的客户端。现在转到实际执行命令的部分。
@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_messages
数组更改为您想要的任何消息即可。
问题内容: 我发现C#中的命名参数功能在某些情况下非常有用。 如果要在JavaScript中使用该怎么办? 我不想要的是: 我已经使用过这种方法。还有另一种方法吗? 我可以使用任何库来做到这一点。 问题答案: ES2015及更高版本 在ES2015中, 参数解构可用于模拟命名参数。这将要求调用者传递一个对象,但是如果您还使用默认参数,则可以避免函数内部的所有检查: ES5 有一种方法可以接近您想要
上面的代码正在运行。 我没有得到任何错误,但我也希望机器人显示他们是afk的原因,当他们提到。有人能帮忙吗?
是否有方法使用CUPS库获取打印机的所有字节命令列表,这些命令应发送到打印机以执行操作。例如:如果我想找出打印机自动剪切功能的字节命令,我可以用CUPS吗?他们有这个功能的API吗?
问题内容: 我正在使用Spring 3.0.5,并为类成员尽可能多地使用@Autowire注释。我需要自动装配的bean之一需要其构造函数的参数。我浏览了Spring文档,但似乎找不到任何有关如何注释构造函数参数的参考。 在XML中,我可以将其用作bean定义的一部分。@Autowire注释是否有类似的机制? 例如: 在此示例中,如何在MyBeanService中使用@Autowire批注指定“
我在我的discord机器人上遇到了一个问题。命令不起作用。我认为代码不是问题。除了命令外,一切都很完美。不和谐,如果我使用!在这里测试mytext,什么都不会发生。 提前谢谢你!
我正在寻找一种方法来记录这个框架中包含的所有查询信息http://ttddyy.github.io/datasource-proxy/docs/current/user-guide/index.html#query-然而,我想排除查询参数的日志记录。有没有办法使用数据源代理来实现这一点?如果没有,我还有什么选择?我目前正在使用spring boot 2.1.1。 谢谢,布莱恩