【发布时间】:2017-07-29 13:53:11
【问题描述】:
我从 Python 开始,目前正在使用 API 开发 Discord 机器人。到目前为止一切顺利,一切正常。现在,我希望在没有控制台的服务器上托管脚本,这意味着我希望输出进入文件而不是控制台。我目前有以下工作:
import discord
import logging
logging.basicConfig(filename='.\output.log', filemode='w', level=logging.INFO, format='%(asctime)s:%(levelname)s:%(message)s')
xzbot = discord.Client()
# logging when the bot starts
@xzbot.event
async def on_ready():
logging.info('Logged in as ' + xzbot.user.name + ' (' + xzbot.user.id + ')\n')
因此,此代码会将任何警告和信息放在 output.log 中。话虽如此,当机器人尝试在没有权限的情况下发送消息时,它不适用于 Discord.py 引发的异常,例如“权限被拒绝”。
Discord API 中有一个内置函数可以处理这个问题:
discord.on_error(event, *args, **kwargs)
所以我可以这样调用这个函数:
async def xzbot.on_error(event, *args, **kwargs):
pass
现在,我尝试使用 event、*args 或 **kwargs 做一些事情,但我需要一些帮助才能以我可以使用 logging.warning() 的格式获得它。由于print(*args),我所能得到的只是object,我不知道如何正确格式化。
【问题讨论】: