如何在discord.py中记录特定用户的信息



我正在设置一个机器人,如果满足特定标准,它会对某人进行ping。举个例子,假设有人说";苹果;在聊天中。

我正试图建立一个系统,如果一个人键入";!ping apple"在聊天中,每当出现";苹果;出现在聊天中。然而,我无法找到一种方法来自动将这些信息存储在基于用户的列表中。我想做的是:

  1. 用户说"!ping apple">

  2. 机器人程序将";苹果;分配给该人员的列表。

  3. 如果";苹果;聊天中说,机器人会ping那个人。

有没有办法做到这一点(最好是有效的(?我尝试过的一种策略是基于这篇关于将字符串重命名为变量的文章(它去掉了用户的@,去掉了@和#xxxx,去掉了空格,然后将生成的字符串变成了包含列表的变量(,但这有可能产生一堆错误,而且不是蟒蛇式的。

一个可行的策略是说";!ping<单词>lt;用户名称>quot;但我似乎也遇到了同样的问题;具有字符串而不是变量。

有多种方法可以做到这一点,但我个人会这样做:

为了简单起见,我假设您使用的是内置的ext.commands.cog模块。如果你使用不同的核心,情况会略有不同。

将配置内置到您的核心中,或者在您的cog中进行本地配置。我将使用方法self.get_settings()作为获取dict的方法。您还需要一个方法来保存设置,如self.save_settings()

@commands.command()
async def ping(self, ctx: commands.Context, word: str):
settings = self.get_settings()
settings[word] = ctx.author.id  #gets the user id from the person
self.save_settings(settings)

那么你的听众会像一样

@commands.Cog.listener()
async def on_message(self, message: discord.Message):
settings = self.get_settings()
if message.content in settings:
await message.channel.send(f'<@{settings[message.content]}>')

一个简单的设置管理器可以是:(你需要导入json-btw(

def get_settings():
with open('settings.json', 'r') as file:
return json.load(file)
def save_settings(settings):
with open('settings.json', 'r') as file:
json.dump(settings, file)

这将是最简单的方法做到这一点

编辑:设置管理器的实现

相关内容

  • 没有找到相关文章

最新更新