如何为discord.py机器人制作一个记录器,它记录用户运行的所有主持人命令 文件也应该自动生成
例如。 该机器人位于服务器 A 中,user1 向 user2 发出警告。
在名为ServerA.txt的日志文件中,它将其保存为...
USER1 WARNED USER2 IN {time}.
这就是我需要的
当任何人将机器人添加到服务器 B 时,它会生成一个名为 ServerB.txt 的文件,并按编码记录。
谢谢。
最佳答案
抱歉,在第一个回复准备好之前就发布了,现在重新发布。
好吧,虽然我不会为您提供太多具体的代码,但我可以帮助您提供一些通用架构和伪代码,它们应该对您的旅程有所帮助。
根据您想要完成的具体操作,我建议您这样做。
首先,您需要导入日期时间
(如果您还没有导入的话),因为这是获取日志的最简单方法。
接下来,您需要创建一个时间戳函数,您的日志记录函数将调用该函数来获取您想要的确切时间戳格式。像这样的事情会起作用:
def getDate(): #getFormattedDate
return datetime.datetime.today().strftime("[%y-%m-%d-%H%M%S]-")
上面将给出一个字符串(今天和现在)可能如下所示:[2019-12-13-10:42:00]-
创建一个日志记录函数,例如 def serverlog(server, command, ..):
然后,只要在您的机器人上调用可记录命令,您就需要调用此函数。
- 服务器将是消息上的guild.name
- 命令将是使用的主持人命令
- .. 只是您可能认为合适的任何其他参数,例如 message.author
也许,或者任何被警告的人。我将把它留给你..
对于函数本身,您需要将 getDate()
调用到您正在使用的任何字符串输出中。该函数需要在您指向的任何位置打开文本文件,如果它不存在,那么它应该创建它。
def serverlog(server,command,..):
try:
check = open(str(server)+"-log.txt","r+")
except IOError:
log = open(str(server)+"-log.txt","a+")
print(str(server)+"-log.txt succesfully created")
log.close()
log = open(str(server)+"-log.txt","a", encoding='utf-8')
log.write(getDate()+.....)
log.write
将是您的自定义日志消息,该消息将写入该特定服务器的日志文件中,因此您可以根据您的目的根据需要对其进行自定义。
从那里,您将找到各种命令,例如 !warn
并添加诸如 serverlog(guild.name, "warn")
之类的行来调用记录命令。
下面是我不久前在旧版本的discord.py上编写的机器人的一些旧代码,它有一个类似的日志记录方法,可能对你有帮助:https://github.com/JohnWhy/Jbot-for-Discord/blob/master/Jbot.py
祝你好运,玩得开心!
关于python - 创建一个记录主持人命令的记录器,类似于 'modlogs',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59316180/