朋友们,我正在尝试做一个机器人,当我使用一个命令,然后提到另一个用户,机器人将创建一个响应,开始标记我,然后是一个响应,然后是标记我最初提到的用户。 到目前为止,我已经成功地创建了一个具有前两个参数的字符串,但是我不知道如何将bot标记用于我提到的用户。我试过许多不同的琴弦,但似乎都不行。 这里是一个代码的例子,因为它是工作到目前为止(没有提到另一个标记的用户):
import asyncio
import random
from discord import user
from discord.ext.commands import Bot
BOT_PREFIX = ("=", "!!")
TOKEN = "#####################################"
client = Bot(command_prefix=BOT_PREFIX)
@client.command(name='uppercut')
@asyncio.coroutine
async def uppercut(ctx):
possible_responses = [
'has delivered a jaw shattering uppercut to'
]
await ctx.send(ctx.message.author.mention + ", " + random.choice(possible_responses))
client.run(TOKEN)
任何建议任何人都可以实现这一点将非常感谢! 问题来源StackOverflow 地址:/questions/59383602/trying-to-tag-another-user-in-discord-bot-but-my-string-wont-complete-using-di
听起来您希望命令接受另一个参数,并为该参数使用成员或用户转换器。然后,您可以使用作为参数传递的成员或用户对象的mention属性。 例如:
import discord
@client.command()
async def uppercut(ctx, member: discord.Member):
possible_responses = [
'has delivered a jaw shattering uppercut to'
]
response = random.choice(possible_responses)
await ctx.send(f"{ctx.message.author.mention} {response} {member.mention}")
见https://discordpy.readthedocs.io/en/latest/ext/commands/commands。有关不一致转换器的更多信息,请参阅。 或者,您可以使用来自上下文的消息对象的提到属性。消息,它将为您提供成员/用户对象的列表,代表消息中提到的对象。 例如:
@client.command()
async def uppercut(ctx):
possible_responses = [
'has delivered a jaw shattering uppercut to'
]
response = random.choice(possible_responses)
mentioned = ctx.message.mentions[0]
# Note, this does not necessarily retrieve the first Member/User mentioned
# and errors if the message has no mentions
await ctx.send(f"{ctx.message.author.mention} {response} {mentioned.mention}")
另外,不需要使用@asyncio。当你已经用async def定义它的时候,@asyncio。在Python 3.8中不赞成使用协同程序,而应该使用异步def。 如果命令名与函数名相同,则不需要显式地指定命令名。见https://discordpy.readthedocs.io/en/latest/ext/commands/api.html # discord.ext.commands.command。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。