创建一个记录主持人命令的记录器,类似于“ modlogs”

时间:2019-12-13 04:33:51

标签: python discord.py

如何为discord.py bot创建记录器,该记录器记录用户运行的所有主持人命令 此外,文件应自动生成

例如。 该漫游器位于服务器A 中,并且 user1 警告 user2

在名为 ServerA.txt 的日志文件中,将其另存为...

  

USER1在{时间}警告USER2。

这就是我需要的

当任何人将漫游器添加到服务器B 时,它都会生成一个名为 ServerB.txt 的文件,并按照编码进行记录。

谢谢。

1 个答案:

答案 0 :(得分:1)

抱歉,在准备好之前先发布了第一个回复,现在重新发布。

好的,虽然我不会为您提供太多特定的代码,但是我可以帮助您提供一些通用的体系结构和伪代码,这些将在您的旅程中为您提供帮助。

根据您要完成的工作,这就是我建议的做法。

首先,如果您还没有import datetime,则要这么做,因为这是获取日志的最简单方法。

接下来,您将要创建一个时间戳函数,您的日志记录函数将调用该时间戳函数以获取所需的确切时间戳格式。这样的事情会起作用:

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

祝你好运,玩得开心!