我想创建一个命令,通过该命令,我可以通过输入公会ID来获取服务器邀请链接。 喜欢
@bot.command()
async def createinvitelink(ctx,guildid):
pass
因此,每当有人使用命令时,他们都必须输入机器人所在的任何公会ID。机器人将把邀请链接提供给该服务器的用户。 到目前为止,我已经编写了这段代码,但是没有用。
@client.command(name='dm')
async def dm(ctx, guild_id: int):
if ctx.author.id == owner:
guild = client.get_guild(guild_id)
guildchannel = guild.system_channel
invitelink = await guildchannel.create_invite(max_uses=1,unique=True)
await ctx.author.send(invitelink)
有人可以帮我吗?
答案 0 :(得分:0)
这里的问题是system_channel有时可以为None。因此,只需从服务器的频道中获取第一个频道并创建其邀请即可。
@client.command(name='dm')
async def _dm(ctx, guild_id: int):
guild = client.get_guild(guild_id)
channel = guild.channels[0]
invitelink = await channel.create_invite(max_uses=1)
await ctx.author.send(invitelink)
答案 1 :(得分:0)
@client.command()
async def createinvite(ctx, guildid: int):
try:
guild = client.get_guild(guildid)
invitelink = ""
i = 0
while invitelink == "":
channel = guild.text_channels[i]
link = await channel.create_invite(max_age=300,max_uses=1)
invitelink = str(link)
i += 1
await ctx.send(invitelink)
except Exception:
await ctx.send("Something went wrong")
我想我必须解释一下,难道我...让我们看看
我们首先收到 Guild ID 并将其输入为整数,因为我们不需要字符串
然后我为邀请链接创建了一个空白字符串和一个随机变量,其值设置为0
然后我们运行一个while循环,我们这样做的原因是因为您的机器人没有必要为服务器中的第一个频道提供邀请权限,所以我们想要的是,如果机器人没有获得第一个频道的邀请,它会尝试下一个,直到检查完服务器中的每个频道为止。只有这样你才能说你的机器人无法获得服务器的邀请
无论如何,所以我们检查文本通道并将我们的邀请链接变量的值设置为我们获得的任何字符串输出。这将一直持续到机器人实际找到邀请。如果没有,我们会得到一个例外