discord.py 如何在不使用列表的情况下永久存储用户数据?
How to Store User Data permanently without using a list in discord.py?
基本上我想做的是制作一个黑名单命令,无论何时说坏话都会删除。我希望服务器的管理员能够手动将他们的话列入黑名单。只要机器人 运行,列表就只存储数据。所以它不起作用。我想基本上永久保存用户的输入。我怎么做?我正在使用 discord.py 重写 btw。
嗯,您需要将数据保存到磁盘或某种数据库中。最简单的方法是将所有列入黑名单的单词存储在一个文本文件中。
您可以使用这些功能:
def saveFilterToFile(filterList, filename):
f = open(filename, "w")
for word in filterList:
f.write(word+"\n")
f.close()
def loadFilterFromFile(filename):
f = open(filename, "r")
filterList = f.readlines()
#remove new lines
for i in range(0, len(filterList)):
filterList[i] = filterList[i][:len(filterList[i])-1]
f.close()
return filterList
当添加一个新的列入黑名单的单词时,只需将其添加到您的过滤器列表并执行如下操作:
saveFilterToFile(blacklistedWords, "wordblacklist.txt")
每次您的机器人启动时,只需从您之前保存的文件中加载列入黑名单的单词
blacklistedWords = loadFilterFromFile("wordblacklist.txt")
您还应该稍微修改一下函数,以便在读取、写入等时检查错误
基本上我想做的是制作一个黑名单命令,无论何时说坏话都会删除。我希望服务器的管理员能够手动将他们的话列入黑名单。只要机器人 运行,列表就只存储数据。所以它不起作用。我想基本上永久保存用户的输入。我怎么做?我正在使用 discord.py 重写 btw。
嗯,您需要将数据保存到磁盘或某种数据库中。最简单的方法是将所有列入黑名单的单词存储在一个文本文件中。
您可以使用这些功能:
def saveFilterToFile(filterList, filename):
f = open(filename, "w")
for word in filterList:
f.write(word+"\n")
f.close()
def loadFilterFromFile(filename):
f = open(filename, "r")
filterList = f.readlines()
#remove new lines
for i in range(0, len(filterList)):
filterList[i] = filterList[i][:len(filterList[i])-1]
f.close()
return filterList
当添加一个新的列入黑名单的单词时,只需将其添加到您的过滤器列表并执行如下操作:
saveFilterToFile(blacklistedWords, "wordblacklist.txt")
每次您的机器人启动时,只需从您之前保存的文件中加载列入黑名单的单词
blacklistedWords = loadFilterFromFile("wordblacklist.txt")
您还应该稍微修改一下函数,以便在读取、写入等时检查错误