Giter Site home page Giter Site logo

pyqqrobot's People

Contributors

egnchen avatar wutianming avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

pyqqrobot's Issues

这真的、真的是个问题

怎么终止listening... 我想加一个自动重启功能

我首先将qqhttp_gevent.py里的mHTTPClient_gevent._gevent_req()

f = self.opener.open(r)

改成了

f = self.opener.open(r, timeout=5)

这样就能够每隔五秒钟检测一下“停止”标记是否设置,而不是一直堵塞;

接下来,我将qqrobot.pylisten()里面创建线程的代码改了下,大概是这样:

class l(threading.Thread):
    def __init__(self, qcli, poll_headers):
        threading.Thread.__init__(self)
        self.poll_headers = poll_headers
        self.qcli = qcli
        self._running = True
    def run(self):
        log.i('listener', 'Listener thread started.')
        while self._running:
            log.i('listener', 'Still running, start of loop.')
            print(str(threading.enumerate()))
            # 上面这行列出所有线程以便debug
            r = self.qcli.http_client.req(
                url_poll2, data=d, headers=self.poll_headers)
            self.qcli._callback_receive(
                r, {'url': url_poll2,
                    'data': d, 'headers': self.poll_headers})
            log.i('listener', 'Still running, end of loop.')
        log.i('listener', 'Listener thread stopped.')
    def cancel(self):
        # C中的线程结束是cancel,我就直接用这个命名了,虽然感觉用terminate命名会更好
        log.i('STOP', 'going to stop')
        self._running = False
        self.join()

self.t = l(self, self.poll_headers)
self.t.start()
if join:
    self.t.join()

(作为一个新手,我也不知道是不是有问题...)

然后在listen()的下面添加了一个极其简单的listen_stop()

def listen_stop(self):
    self.t.cancel()

这就算是改造完成了。然而,调用listen_stop会出现一些很玄学的情况,就是线程显示已经退出,但实际上还在运行... 有时间再来补充,再去debug一会

我找到你的bug了哈哈哈哈哈哈哈哈哈哈

File "/home/wtm/Working/QQRobot/qqrobot.py", line 344, in get_self_info
    headers=self.default_header)
AttributeError: 'QQClient' object has no attribute 'default_header'

^在qqrobot.py里的344行,default_headers被打成了default_header

找到你的bug了哈哈哈哈哈哈哈哈哈哈(雾

So slow after update

更新之后特别慢,从veri文件里读入完Username之后就卡很长时间才登录,登录之后获取消息延迟特别大,如果直接扫码登录的话也是特别慢。是代码问题吗?

What is in dev/ ?

I just wonder what is the JS file in the dir dev/. We just need the python codes from src/, right?

允许终止监听

我这边已经把代码写好了,可惜太忙,没时间整理上传(我本地的代码与上传到GitHub的代码会略有不同,所以需要整理)。这个issue放在这里,等我弄好了,发个PR,就close。

How to send msgs to a group

你没告诉我们怎么处理群和讨论组啊,难道让我自己翻代码?

(好像也不是不可以,但是你至少加个API手册吧)

sendBuddyMessage 无法发送消息

之前sendMessage可以给好友发消息的,现在不可以了,提示KeyError。
另外,sendGroupMessage我试了几次也没能成功发送消息。

查询用户信息?

只能获取uin,而且还是被webQQ魔改过的,完全不友好啊。求获取姓名/昵称的方法

Annoying typos

at example code in readme.md:
<-- /bin/usr/env
--> /usr/bin/env

可以在listen的时候干其他事情嘛?

初步判断是QQClient.listen(join=False)或者QQClient.listen(),但是貌似这样listen之后没法发送信息,显示The following error occurred when sending last message:,但是冒号后面就什么也没有了...

求解。

难道我需要自己开一个线程单独listen(join=True)
^这好像是可行方法。

艾特导致msg获取不全

一旦使用艾特功能,msg会被截断,例如:
A: @bot asd
bot接收到的是“@bot”。asd消失。
但是,如果手动输入名字进行艾特,msg就不会出问题。
可能是因为qq在自动艾特名字的结尾处会加一个标识的字符,这个咋处理?

retcode 1202.

出现retcode 1202,log显示发送成功,但是接收者未收到信息。

而且,这个号用webQQ也无法发送消息了,请问有人知道为啥吗?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.