python - 当我尝试将 user_id 转换为 discord.py 上的成员用户名时,我不断收到 NoneType
问题描述
使用这行代码时返回成员 ID 时遇到问题,当我不调用任何东西时,我只是让它运行为:
table = ("\n".join(f'{idx + 1}. {(entry[0])} (XP: {entry[1]} | Level: {entry[2]})'
for idx, entry in enumerate(entries)))
我将用户 ID 存储在我的数据库中。
但是,一旦我尝试将它们转换为不和谐的成员用户名,我就会得到非类型对象
table = ("\n".join(f'{idx + 1}. {self.ctx.guild.get_member(entry[0])} (XP: {entry[1]} | Level: {entry[2]})'
for idx, entry in enumerate(entries)))
需要更多代码来回答这个问题,所以在这里
class HelpMenu(ListPageSource):
def __init__(self, ctx, data):
self.ctx = ctx
super().__init__(data, per_page = 10)
async def write_page(self, menu, fields=[]):
offset = (menu.current_page * self.per_page) + 1
len_data = len(self.entries)
embed = Embed(title="Server XP Leaderboard",
colour=self.ctx.author.colour)
embed.set_thumbnail(url = self.ctx.guild.icon_url)
embed.set_footer(text = f"{offset:,} - {min(len_data, offset+self.per_page-1):,} of {len_data:,} members.")
for name, value in fields:
embed.add_field(name=name, value=value, inline=False)
return embed
async def format_page(self, menu, entries):
fields = []
table = ("\n".join(f'{idx + 1}. {self.ctx.guild.get_member(entry[0])} (XP: {entry[1]} | Level: {entry[2]})'
for idx, entry in enumerate(entries)))
fields.append(("Ranks", table))
return await self.write_page(menu, fields)
class Exp(Cog):
def __init__(self, bot):
self.bot = bot
@command(aliases = ['lvl', 'level'])
async def rank(self, ctx):
db = sqlite3.connect('xpdata.db')
cursor = db.cursor()
# user_id = self.author.id
guild_id = ctx.guild.id
#
# cursor.execute(f'SELECT * FROM xpdata WHERE user_id = {user_id} AND guild_id = {guild_id}')
# for row in cursor.fetchall():
# level_display = row[3]
cursor.execute(f'SELECT user_id, xp, level FROM xpdata WHERE guild_id = {guild_id} ORDER BY xp DESC')
xp_ranking = cursor.fetchall()
#menu
ranking_menu = MenuPages(source=HelpMenu(ctx, xp_ranking))
await ranking_menu.start(ctx)
#await ctx.channel.send('{} is currently level {} and rank {}'.format(ctx.author.mention, level_display))
bot.add_cog(Exp(bot))
解决方案
为了解决这个问题,我需要打开不和谐的特权意图。
您可以在 discord 开发门户网站上执行此操作。
然后我需要用
intents = discord.Intents(messages=True, guilds=True)
推荐阅读
- swift - CAShapeLayer 中风问题
- css - 底部对齐 React Bootstrap Card.Img
- python - Python正则表达式查找单个字母基本方向
- python - 电报机器人 python 使用 user_id 授权用户
- python - 按特定顺序组织饼图中的颜色?
- c++ - 如何删除单个空白而不是多个?
- python - 如何在代码更新或服务器重新启动时在 Windows 中重新启动 Dramatiq?
- python - 在 pandas 中拆开 json 字典
- python - Spyder 不会运行已安装的模块 - Windows 10
- python - 模块“discord.ext.commands”没有属性“get_channel”