对于用户和频道计数器,您可以使用len() 函数来计算有多少。如果您没有启用成员intent,也可以使用ctx.guild.member_count。
# Using len()...
embed.add_field(name="Users:", value=ctx.guild.member_count, inline=False)
embed.add_field(name="Channels:", value=len(ctx.guild.channels), inline=False)
但是,对于消息,您需要使用数据库或全局变量,并在每次发送消息时手动增加条目。全局变量比数据库更易于使用,但是只要脚本结束或重新启动,它就会被刷新。
顺便说一句,如果你还是想使用数据库,我建议你查看dataset。
# Using a global variable (dictionary)
# Somewhere in your code...
messagecounts = {}
...
@bot.event
async def on_message(message):
if message.guild.id not in messagecounts.keys(): # Make sure there's already an entry... If not, add one!
messagecounts[message.guild.id] = 0
messagecounts[message.guild.id] += 1 # Sets the new count to 1 greater than the original.
然后,要检索此金额,您将添加字典条目。
最终代码:
# Somewhere above the command...
messagecounts = {}
@bot.command()
async def serverstats(ctx):
embed=discord.Embed(title=f"Statystyki serwera {ctx.guild.name}")
embed.add_field(name="Users:", value=ctx.guild.member_count, inline=False)
embed.add_field(name="Channels:", value=len(ctx.guild.channels), inline=False)
embed.add_field(name="Messages sent:", value=messagecounts[ctx.guild.id], inline=False)
await ctx.send(embed=embed)
@bot.event
async def on_message(message):
if message.guild.id not in messagecounts.keys():
messagecounts[message.guild.id] = 0
messagecounts[message.guild.id] += 1