如何让我的 Discord.py 机器人计算一个人的消息?
How do I make, so my Discord.py bot counts a person's messages?
我的 Discord 机器人中有一个调平系统,但它并没有真正添加任何东西。我希望我的机器人计算一个人写的消息,然后对于特定数量的消息(即 1000 条消息),您将获得一个角色。我该怎么做?
首先你似乎是新手,我建议你看看 how to ask 更合适的问题。
其次。您将需要一个数据库,为简单起见,我将使用 sqlitedict,但请查看其他更好的工具,例如 tortoise-orm.
首先定义你的数据库对象。在此示例中,它的行为有点像字典。
from sqlitedict import SqliteDict
db = SqliteDict(
'db.sqlite',
tablename='foo',
autocommit=True
)
现在在您的 on_message 处理程序中使用它
@bot.event
async def on_message(msg):
if msg.guild:
guild_db = db.get(msg.guild.id, {})
user_db = guild_db.setdefault(
msg.author.id, {'msgs': 0}
)
user_db['msgs'] += 1
db[msg.guild.id] = guild_db
处理程序现在将按公会计算来自成员的消息。
然后您可以使用该信息做任何您需要的事情
user_db = (
db.get(guild.id, {})
.get(member.id, {'msgs', 0})
)
if user_db['msgs'] >= some_number:
await member.add_roles(your_role)
这又不是最佳实现,我只是想展示如何跟踪成员的消息计数。
对于真正的数据库,请查看 tortoise-orm、aioslqlite 或任何其他更合适的实现。
我的 Discord 机器人中有一个调平系统,但它并没有真正添加任何东西。我希望我的机器人计算一个人写的消息,然后对于特定数量的消息(即 1000 条消息),您将获得一个角色。我该怎么做?
首先你似乎是新手,我建议你看看 how to ask 更合适的问题。
其次。您将需要一个数据库,为简单起见,我将使用 sqlitedict,但请查看其他更好的工具,例如 tortoise-orm.
首先定义你的数据库对象。在此示例中,它的行为有点像字典。
from sqlitedict import SqliteDict
db = SqliteDict(
'db.sqlite',
tablename='foo',
autocommit=True
)
现在在您的 on_message 处理程序中使用它
@bot.event
async def on_message(msg):
if msg.guild:
guild_db = db.get(msg.guild.id, {})
user_db = guild_db.setdefault(
msg.author.id, {'msgs': 0}
)
user_db['msgs'] += 1
db[msg.guild.id] = guild_db
处理程序现在将按公会计算来自成员的消息。
然后您可以使用该信息做任何您需要的事情
user_db = (
db.get(guild.id, {})
.get(member.id, {'msgs', 0})
)
if user_db['msgs'] >= some_number:
await member.add_roles(your_role)
这又不是最佳实现,我只是想展示如何跟踪成员的消息计数。
对于真正的数据库,请查看 tortoise-orm、aioslqlite 或任何其他更合适的实现。