在Twisted和Os中从外部事件处理器发送ICQ消息

2024-05-14 06:14:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在为一个服务制作一个ICQ(和XMPP在prospect中)bot,它应该发送和接收来自用户的消息。在

我用的是Python和Twisted。我从官方文档的例子开始(这个例子:http://twistedmatrix.com/documents/current/words/examples/oscardemo.py

到目前为止,我成功地接收和处理来自ICQ联系人的消息。现在我需要发送消息,但不是在回复他们的消息或某些事件。我需要用Oscar(Twisted的ICQ消息传递工具)从类外部用事件处理程序发送消息。我该怎么做?在

我很感谢任何帮助,因为我没有谷歌任何有用的东西,没有那么多关于使用奥斯卡。在


Tags: 用户文档comhttp消息官方bot事件
2条回答

没有“内”或“外”。编程中的包容隐喻是一个非常有害的隐喻。你最好忘掉它。在

考虑这个类:

class Foo(object):
    def bar(self):
        return "Foo.bar says hello"

    def baz(self):
        print self.bar()

给定一个名为aFooFoo实例,考虑以下两种使用方法:

^{pr2}$

这两种用法在行为上有什么不同?没有一个,但是一个从“内部”调用bar,一个从“外部”调用bar。包容隐喻在这里是无用的和无关的,没有任何变化基于“从哪里”调用函数。在

当您连接时

protocol.ClientCreator(reactor, OA, SN, PASS, icq=icqMode).connectTCP(*hostport)

添加一个Deferred,连接完成后将调用它:

^{pr2}$

get_B_instance函数中,可以保留对protocol类实例的引用。在

然后您可以在该实例上调用sendMessage。在

oscar_prot.sendMessage(username, message)

相关问题 更多 >