python - 创建一个记录主持人命令的记录器,类似于 'modlogs'

标签 python discord.py

如何为discord.py机器人制作一个记录器,它记录用户运行的所有主持人命令 文件也应该自动生成

例如。 该机器人位于服务器 A 中,user1user2 发出警告。

在名为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/

相关文章:

python - Discord.py 机器人在嵌入中未使用正确的文本格式,而仅在移动设备上使用?

python - 如何使用 Discord.py 重写更改机器人用户名/头像?

python - 如何在fiddler中捕获python https流量?

python - 我如何在 django 重定向中使用 kwargs,我有一个错误

python - 如何将我的模块导入 python 控制台?

discord.py - 获取硝基用户的头像

python - 如何在 discord.py 中安排一个函数在每天的特定时间运行?

python - 如何在 heroku 上托管我的 discord.py 机器人?

python - 如何删除 matplotlib 对数对数图上的科学记数法

Python groupby 行为异常