开发者社区> 问答> 正文

尝试在Bot中标记另一个用户,但我的字符串无法使用dis .py完成

朋友们,我正在尝试做一个机器人,当我使用一个命令,然后提到另一个用户,机器人将创建一个响应,开始标记我,然后是一个响应,然后是标记我最初提到的用户。 到目前为止,我已经成功地创建了一个具有前两个参数的字符串,但是我不知道如何将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

展开
收起
kun坤 2019-12-27 10:16:25 433 0
1 条回答
写回答
取消 提交回答
  • 听起来您希望命令接受另一个参数,并为该参数使用成员或用户转换器。然后,您可以使用作为参数传递的成员或用户对象的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。

    2019-12-27 10:16:33
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载