pandolia / qqbot

QQBot: A conversation robot base on Tencent's SmartQQ
Other
3.68k stars 877 forks source link

是否能增加一个传入参数功能 #350

Closed sakurayang closed 6 years ago

sakurayang commented 6 years ago

是这样的,我是一个字幕组的成员,我想要说一个自动任务发布与接受系统,发布是没问题的,卡在接受部分,因为我发现没有办法传入不同的任务名 就比如

if content == '-task:time':
      #somecode
      bot.SendTo(contact, 'someword')
elif content == -task:%arg:
       #somecode

这个%arg就是参数,比方说要小明要接受一个买东西的任务 那么他在群里面输入 -task:买东西即可接受,我想过一种方法,因为我是字幕组,所以可以将要做的视频存入一个数据库,然后在脚本里读入list,通过for的方法来创建

#省略导入数据库部分
#假设task为一个内含元组的list
#undo[0]为任务名 undo[1]为任务接收人 undo[3]为是否完成(0/1)
for undo in task:
      if undo[3] == 0:
            def onQQMessage(bot, contact, menber, content):
                     if contact == '-'+undo[0]:
                             #将任务人写入数据库
                             #othercode
                     elif ..................
       else:
              bot.SendTo(contact, '目前没有任务')

但是很麻烦而且效率不高,而且我想写好之后作为一个任务插件开放出去,目前这种用for创建的方法一旦任务多起来就会变得很低效。 能否有一种官方函数来支持这个功能?


顺带一提,目前架构:

视频更新 --->  IFTTT  ---->webhook --->php--->数据库
                                       |
                                      v
                            exec('./send.sh')----->qqbot
pandolia commented 6 years ago

不是太明白您的意思。似乎直接通过 onQQMessage 函数就可以实现您想要的功能。比如:

if content == '-task:time':
    #somecode
    bot.SendTo(contact, 'someword')
elif content.startsWith('-task'):
    arg = content[5:]
    #somecode
sakurayang commented 6 years ago

问题已解决(;OvO)b''