获取完整的服务器列表

Get Complete Servers List

那么如何获取我的机器人已连接或安装的所有服务器列表。我使用了下面的代码,但现在不知道为什么。

servers = list(bot.servers)
print("Connected on " + str(len(bot.servers)) + "servers:")
for x in range(len(servers)):
    print('  ' + servers[x-1].name)

我的bot.py完整代码

token = "This is my Token" # This is what the bot uses to log into Discord.
prefix = "?" # This will be used at the start of commands.

import discord
from discord.ext import commands
from discord.ext.commands import Bot

bot = commands.Bot(command_prefix=prefix)
bot.remove_command("help")

@bot.event
async def on_ready():
    print('Logged in as')
    print(bot.user.name)
    print(bot.user.id)
    print(discord.__version__)
    print('------')

@bot.command(pass_context=True)
async def ping(ctx):
    msg = 'Pong {0.author.mention}'.format(ctx.message)
    await bot.say(msg)

@bot.command(pass_context=True)
async def hello(ctx):
    msg = 'hello... {0.author.mention}'.format(ctx.message)
    await bot.say(msg)

bot.run(token)

对于 async 分支,bot.servers returns 机器人可以看到的所有服务器的可迭代。

对于 rewrite 分支,server 已重命名为 guild,因此请改用 bot.guilds

您可以修改 on_ready 事件以打印出所有服务器名称。

异步

@bot.event
async def on_ready():
    print('Logged in as')
    print(bot.user.name)
    print(bot.user.id)
    print(discord.__version__)
    print('------')

    print('Servers connected to:')
    for server in bot.servers:
        print(server.name)

重写

@bot.event
async def on_ready():
    print('Logged in as')
    print(bot.user.name)
    print(bot.user.id)
    print(discord.__version__)
    print('------')

    print('Servers connected to:')
    for guild in bot.guilds:
        print(guild.name)

我从代码中获得了一些乐趣。这是当前可用的版本。

@bot.event
async def on_ready():
print(f'Currently at {len(bot.guilds)} servers!')
print('Servers connected to:')
print('')
for server in bot.guilds:
    print(server.name)

这对你来说应该很好用。