在discord.py中邀请命令(按ID邀请用户到服务器)

时间:2018-02-07 19:36:44

标签: python discord discord.py

正如标题所暗示的那样,我想向我的机器人添加一个命令,该命令会将某人邀请加入服务器。使用永久的静态链接不是一种选择,因为我希望命令可以在不同的服务器上使用。

这是我到目前为止所做的:

@BSL.command(pass_context = True)
async def invite(ctx, userToInvite):
        inviteLinq = await BSL.create_invite(destination = ctx.message.channel, xkcd = True, max_uses = 1)
        await BSL.send_message(userToInvite, inviteLinq)

但是,我收到错误InvalidArgument: Destination must be Channel, PrivateChannel, User, or Object. Received str。我理解这是因为不和谐中的消息被保存为字符串。

有没有办法让它可以指定用户的ID并且他们在DM中收到邀请链接?

1 个答案:

答案 0 :(得分:1)

您的userToInvite是一个字符串,但它应该是User个对象。您应该使用Server.get_member_named从服务器获取Member对象。像

这样的东西
@BSL.command(pass_context = True)
async def invite(ctx, userToInvite):
        inviteLinq = await BSL.create_invite(destination = ctx.message.channel, xkcd = True, max_uses = 1)
        target_member = await ctx.message.server.get_member_named(userToInvite)
        await BSL.send_message(target_member, inviteLinq)

编辑:

如果您使用其ID邀请用户访问此服务器,则应尝试

@BSL.command(pass_context = True)
async def invite(ctx, userToInvite):
        inviteLinq = await BSL.create_invite(destination = ctx.message.server, xkcd = True, max_uses = 1)
        target_user = await BSL.get_user_info(userToInvite)
        await BSL.send_message(target_member, inviteLinq)