将用户打印到控制台,但不包含具有默认头像Discord.py的用户

时间:2018-08-12 08:23:18

标签: python discord discord.py discord.py-rewrite

我将如何打印以控制台服务器中的用户列表(不包括具有默认/空头像的用户)?我当前的代码看起来像这样,但是不起作用。它打印用户列表,但不排除具有默认头像的用户。这是使用Discord.py重写的。

#!/usr/bin/python
token = ""
prefix = "?"

import discord
import asyncio
import codecs
import sys
import io
from discord.ext import commands
from discord.ext.commands import Bot

print ("waiting")

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

@bot.event
async def on_ready():
    print ("users with avatars")

@bot.command(pass_context=True)
async def userlist(ctx):
    for user in list(ctx.message.guild.members):
        if user.avatar == None:
            pass
        else:
            for user in list(ctx.message.guild.members):
                print (user.name+"#"+user.discriminator)

bot.run(token, bot=False)

2 个答案:

答案 0 :(得分:1)

当用户的头像为空时,也许user.avatar不会返回None。 尝试找到当用户的头像为空白时user.avatar返回的值。

for user in list(ctx.message.gild.members):
    print(user.name + " = " + user.avatar)

答案 1 :(得分:0)

User也具有User.default_avatar属性。如果将其与User.avatar进行比较,则应该能够过滤出匹配的用户。

@bot.command()
async def userlist(ctx):
    for user in ctx.guild.members:
        if user.avater != user.default_avater:
            print (user.name+"#"+user.discriminator)

这是假设您的真正问题不是您在else内再次遍历所有成员。尝试以下解决方案:

@bot.command()
async def userlist(ctx):
    for user in ctx.guild.members:
        if user.avatar:
            print (user.name+"#"+user.discriminator)