Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用Discord API处理错误(on_错误)_Python_Discord - Fatal编程技术网

Python 使用Discord API处理错误(on_错误)

Python 使用Discord API处理错误(on_错误),python,discord,Python,Discord,我从Python开始,目前正在使用API开发Discord机器人。到目前为止一切正常。现在,我希望在没有控制台的服务器上托管脚本,这意味着我希望输出放在文件中,而不是控制台中。我目前有以下工作: 导入不一致 导入日志记录 logging.basicConfig(文件名='。\output.log',filemode='w',level=logging.INFO,格式='%(asctime)s:%(levelname)s:%(message)s') xzbot=discord.Client() #

我从Python开始,目前正在使用API开发Discord机器人。到目前为止一切正常。现在,我希望在没有控制台的服务器上托管脚本,这意味着我希望输出放在文件中,而不是控制台中。我目前有以下工作:

导入不一致
导入日志记录
logging.basicConfig(文件名='。\output.log',filemode='w',level=logging.INFO,格式='%(asctime)s:%(levelname)s:%(message)s')
xzbot=discord.Client()
#当bot启动时记录日志
@xzbot.event
_ready()上的异步定义:
logging.info('以'+xzbot.user.name+'('+xzbot.user.id+')身份登录)\n')
因此,此代码将在output.log中放置任何警告和信息。尽管如此,当bot试图在没有权限的情况下发送消息时,Discord.py引发的异常(如“权限被拒绝”)不起作用

Discord API中有一个内置函数来处理:

discord.on_错误(事件,*args,**kwargs)
所以我可以这样调用这个函数:

async def xzbot.on_错误(事件,*args,**kwargs):
通过

现在,我尝试使用
事件
*args
**kwargs
执行一些操作,但我需要一些帮助,以便以一种可以使用
logging.warning()
的格式实现这一点。我所能得到的只是
打印(*args)
后的
对象
,我不知道如何正确设置格式。

好的,因此这段代码将记录下来,并向导致错误的频道发送消息

如果您不希望它发送消息,可以删除
等待xzbot.send_message

import traceback
@xzbot.event
async def on_error(event, *args, **kwargs):
    message = args[0] #Gets the message object
    logging.warning(traceback.format_exc()) #logs the error
    await xzbot.send_message(message.channel, "You caused an error!") #send the message to the channel
format_exc()格式化最后一个错误,因此它看起来像是打印到控制台的正常错误


好的,这段代码将记录下来,并向导致错误的频道发送一条消息

如果您不希望它发送消息,可以删除
等待xzbot.send_message

import traceback
@xzbot.event
async def on_error(event, *args, **kwargs):
    message = args[0] #Gets the message object
    logging.warning(traceback.format_exc()) #logs the error
    await xzbot.send_message(message.channel, "You caused an error!") #send the message to the channel
format_exc()格式化最后一个错误,因此它看起来像是打印到控制台的正常错误