我将如何打印以控制台服务器中的用户列表(不包括具有默认/空头像的用户)?我当前的代码看起来像这样,但是不起作用。它打印用户列表,但不排除具有默认头像的用户。这是使用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)
答案 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)