如何让Discord机器人的状态显示当前时间?
问题根因
你传入discord.Game的参数是未执行的datetime.datetime.utcnow方法本身,而非方法执行后返回的UTC时间对象,所以状态会显示方法的类型信息而非实际时间。同时要注意,discord.Game接收的是字符串类型参数,需要把时间对象转为字符串格式才能正常显示。
修复代码
直接在utcnow后加括号执行方法,同时用str()转为字符串即可:
await client.change_presence(status=discord.Status.online, activity=discord.Game(str(datetime.datetime.utcnow())))
可选:自定义时间格式
如果需要调整时间显示格式,可以用strftime方法自定义输出规则,示例如下(显示为年-月-日 时:分:秒格式):
utc_time = datetime.datetime.utcnow().strftime("%Y-%m-%d %H:%M:%S") await client.change_presence(status=discord.Status.online, activity=discord.Game(utc_time))
内容的提问来源于stack exchange,提问作者Tobias Bingham
相关产品推荐
相关产品推荐

