转载请注明出处:小锋学长生活大爆炸[xfxuezhang.cn]

目录

背景介绍

解决思路

实现方法

最终效果


背景介绍

就是说,后台运行了mcl,但经常莫名其妙自动会退出,导致每次都得手动的去服务器上重新启动mcl。而对于自己运行的需要用到mirai的软件,也得重新获取bot id。非常的麻烦!

解决思路

1、通过一个python脚本,定时的去检查mcl的运行状态,如果发现mcl退出了,就赶紧重新运行起来。

2、由于这里重新运行了mcl,我们应该通知其他用到了这个mirai的软件,也需要重新获取bot id。这里使用最简单粗暴的方法:每次重启了mcl,就在指定目录下生成一个文件。而其他软件可以判断是否存在这个,从而决定是否重新获取bot id。(当然,你的软件在每次使用时,都生成一个新的bot id也行,但会导致服务器的缓存占用变高。)

实现方法

监控mcl的python脚本——listene.py:

import subprocess
import time
import os
import atexitprocess = subprocess.Popen(['./mcl -u'])
stoped_flag = Falsedef kill_process():process.kill()atexit.register(kill_process)  # 注册进程清理函数while True:time.sleep(10)poll = process.poll()if poll is not None:print('./mcl exited unexpectedly, restarting...')process = subprocess.Popen(['./mcl -u'])stoped_flag = Trueelse:print('./mcl is running')if stoped_flag:stoped_flag = Falsewith open('mcl_restart', 'w+') as f:f.write('1')

用到了mirai的软件中重新生成bot id的示例用法:

def qqTransfer():global botwith open('conf.json', 'r+', encoding="utf-8") as f:content = f.read()conf = json.loads(content)auth_key = conf['auth_key']bind_qq = conf['bind_qq']sleep_time = conf['sleep_time']debug_level = conf['debug_level']receive_groups = conf['receive_groups']send_groups = conf['send_groups']# receive_groups = ['537241540', '719684243']# send_groups = ['537241540', '719684243']logger.setDebugLevel(debug_level)session = bot.verifySession(auth_key)logger.DebugLog(">> session: "+session)bot.bindSession(session, bind_qq)while True:# 看这里看这里!!!!!!!!!!!!!!!!!!!if os.path.exists('mcl/mcl_restart'):print('>> 重新获取bot session')bot = QQBot()session = bot.verifySession(auth_key)logger.DebugLog(">> session: "+session)bot.bindSession(session, bind_qq)os.unlink('mcl/mcl_restart')cnt = bot.getMessageCount(session)if cnt:logger.DebugLog('>> 有消息了 => {}'.format(cnt))logger.DebugLog('获取消息内容')data = bot.getMsgFromGroup(session)if len(data) == 0:logger.DebugLog('消息为空')continuelogger.DebugLog(data)bot.parseMsgForChatGPT(data, bind_qq, session)logger.DebugLog('解析消息内容')data = bot.parseGroupMsg(data)logger.DebugLog(data)logger.DebugLog('转发消息内容')bot.sendMsgToAllGroups(session, receive_groups, send_groups, data)sleep(sleep_time)bot.releaseSession(session, bind_qq)

该代码段取自:mirai QQ机器人最详细教程 [附Q群消息转发例程]

最终效果

目前mcl一直没有断过。

【踩坑】mirai挂机运行经常自动退出怎么办?相关推荐

  1. docker启动mysql容器后又退出_docker容器刚运行就自动退出了

    为什么起了一个docker容器刚运行就自动退出了? 现象: 用docker run 命令起一个容器 #docker run -d --name mycentos-xx -d centos:7.4.17 ...

  2. 谷粒商城笔记+踩坑(22)——库存自动解锁。RabbitMQ延迟队列

    导航: 谷粒商城笔记+踩坑汇总篇 目录 1 业务流程,订单失败后自动回滚解锁库存 可靠消息+最终一致性方案 2[仓库服务]RabbitMQ环境准备 2.1 导入依赖 2.2 yml配置RabbitMQ ...

  3. linux系统安装nacos(减少踩坑)并设置开机自动

    下载地址: 链接:https://pan.baidu.com/s/1DXxQyUxV-bj17etB7398rQ  提取码:1234 也可以去官网下载,但是下载比较慢 开始安装: 进入目录 [root ...

  4. Nvidia Jetson TX2 详细刷机教程及踩坑记录(Jetpack3.3,python2.7,torch1.2,torchvision0.2.2)

    本文总结了自带系统安装cuda等深度学习环境和使用jetpack3.3刷机的步骤,虽然自己的代码没用上,但有需要的人可以参考一下. PS:Jetpack4.5的刷机教程请移步另一篇文章: xyl-50 ...

  5. mediacodec.java_Android原生编解码接口 MediaCodec 之——踩坑

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/gb702250823/article/ ...

  6. zbar android解码错误,Android原生编解码接口 MediaCodec 之——踩坑

    关键帧 MediaCodec 有两种方式触发输出关键帧,一是由配置时设置的 KEY_FRAME_RATE和KEY_I_FRAME_INTERVAL参数自动触发,二是运行过程当中经过 setParame ...

  7. 关于解决Win32控制台程序编译后自动退出

    问题描述:Win32控制台程序编译运行后自动退出,看不到结果,解决此问题有如下几种方法: 使用CTRL+F5进行编译: 使用getchar()函数,放在程序的最后: 使用system("pa ...

  8. scl enable devtoolset-7踩坑

    背景 scl enable devtoolset-7 bash可以开启一个新的bash,里面g++的版本是7,在docker中使用时 踩坑 脚本中运行了scl enable devtoolset-7 ...

  9. 美团外卖正向流程对接踩坑指南

    正向流程中的踩坑点 美团商户端自动接单 美团商户端有开启自动接单的设置,如果开启自动接单后会出现下面两种情况 下单后商户接单,美团不会向推送接单推送订单,但是会推送商家确认订单消息. 针对这种情况,需 ...

最新文章

  1. 特征变换(3)小波变换
  2. [转载]html5教程
  3. React-Native学习指南
  4. pop3 postfix 命令_Email基础知识: SMTP/POP3 命令简介
  5. 【机器学习经典算法源码分析系列】-- 逻辑回归
  6. java获取前端json数据_java如何获取前端ajax传来的json对象
  7. finallshell使用_Finalshell软件安装使用
  8. springMVC浏览器接受json报406错误的解决方法
  9. 【机器学习、神经网络】拟合非线性函数y = x**2 - 2(部分问题未解决)
  10. 【数字信号调制】基于matlab二进制数字频率调制(2FSK)【含Matlab源码 998期】
  11. UI设计中设计没亮点怎么办_上
  12. 程序员是怎么分享微信二维码的
  13. eclipse php jquery,Eclipse 支持jQuery 自动提示
  14. PMP知识点总结—计算题汇总
  15. AIS船舶自动识别系统原理
  16. 一、安装Centos
  17. 电脑之间快速传输超大文件(100GB以上)的方法
  18. 协处理器CP15操作指令
  19. 华为与复旦大学合作开发全国首个医学人工智能课程
  20. 黑客组织 LAPSUS$ 认领,英伟达超7万员工信息遭泄露时间线

热门文章

  1. CSS 实用技巧(更新ing)
  2. [转自itilxf论坛]iTop百问百答
  3. 华为鸿蒙2025,转载:华为鸿蒙,一个本属于2025年的产品
  4. ISO9001质量管理体系认证咨询22步流程——上篇
  5. 百度智能云智慧金融独揽《亚洲银行家》评选三项大奖
  6. php入门的基本语法
  7. 学习-Java常用类之Calendar类(3)
  8. python+opeyxl:随机抽取人员
  9. 【翻译】为了3D游戏粉丝的[(超级)街头霸王4]图形讲座(前篇)
  10. VS 2010和.NET 4.0之WPF 4改进全解析