载,那么加载时间会提前至登录前(原来是登录成功后才加载),但插件中的 onPlug 函数会延迟到登录成功后才被调用,因此原插件内的最外层的初始化
代码如果调用了 bot.List/SendTo 等接口,那么需要将这些代码移到 onPlug 函数内,例如,如果原插件 xxx.py 中最外层的代码有:
from qqbot import QQBot; bot = QQBot._bot
bl = bot.List('buddy', 'jack')
if bl:
bot.SendTo(bl[0], 'plug')
需要修改为:
def onPlug(bot):
bl = bot.List('buddy', 'jack')
if bl:
bot.SendTo(bl[0], 'plug')
当然,如果是登录后采用 hot-plug 的方式加载,那么原来的代码不修改也可以运行。但为了统一 hot-plug 和 auto-plug-at-start 的行为,建议
还是按以上型式进行修改。
(2) 类继承模式或 RunBot
采用类继承方式扩展 QQBot 的方式已经废弃, RunBot 函数也已修改,请按插件模式改写代码。如果需要在 IDE 或 python-shell 里面测试,可参见
文档第五节。
另外请注意:由于 RunBot 函数中调用了 Popen(sys.argv) 重启整个程序,因此该函数在 IDE 或 python-shell 中运行可能会出问题。只能直接在
脚本文件中运行。
(3) 其他模式
如果使用了 qqbot 的内部代码,需要注意 QQBot 类的内部代码有较大的改变,且不允许用户自己调用其 __init__ 函数来构造 QQBot 实例(如:
bot = QQBot() ),需要使用 from qqbot import _bot 来得到这个全局唯一的 QQBot 实例。
另外需要注意, Runbot 函数和 QQBot.Login 方法的参数都变了。