1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
|
Event Index
===========
Slixmpp relies on events and event handlers to act on received data from
the server. Some of those events come from the very base of Slixmpp such
as :class:`~.BaseXMPP` or :class:`~.XMLStream`, while most of them are
emitted from plugins which add their own listeners.
There are often multiple events running for a single stanza, with
different levels of granularity, so code must take care of not
processing the same stanza twice.
.. glossary::
:sorted:
connected
- **Data:** ``{}``
- **Source:** :py:class:`~.xmlstream.XMLstream`
Signal that a connection has been made with the XMPP server, but a session
has not yet been established.
connection_failed
- **Data:** ``{}`` or ``Failure Stanza`` if available
- **Source:** :py:class:`~.xmlstream.XMLstream`
Signal that a connection can not be established after number of attempts.
changed_status
- **Data:** :py:class:`~.Presence`
- **Source:** :py:class:`~.roster.item.RosterItem`
Triggered when a presence stanza is received from a JID with a show type
different than the last presence stanza from the same JID.
changed_subscription
- **Data:** :py:class:`~.Presence`
- **Source:** :py:class:`~.BaseXMPP`
Triggered whenever a presence stanza with a type of ``subscribe``,
``subscribed``, ``unsubscribe``, or ``unsubscribed`` is received.
Note that if the values ``xmpp.auto_authorize`` and ``xmpp.auto_subscribe``
are set to ``True`` or ``False``, and not ``None``, then will
either accept or reject all subscription requests before your event handlers
are called. Set these values to ``None`` if you wish to make more complex
subscription decisions.
chatstate_active
- **Data:** :py:class:`~.Message`
- **Source:** :py:class:`~.XEP_0085`
When a message containing an ``<active/>`` chatstate is received.
chatstate_composing
- **Data:** :py:class:`~.Message`
- **Source:** :py:class:`~.XEP_0085`
When a message containing a ``<composing/>`` chatstate is received.
chatstate_gone
- **Data:** :py:class:`~.Message`
- **Source:** :py:class:`~.XEP_0085`
When a message containing a ``<gone/>`` chatstate is received.
chatstate_inactive
- **Data:** :py:class:`~.Message`
- **Source:** :py:class:`~.XEP_0085`
When a message containing an ``<inactive/>`` chatstate is received.
chatstate_paused
- **Data:** :py:class:`~.Message`
- **Source:** :py:class:`~.XEP_0085`
When a message containing a ``<paused/>`` chatstate is received.
disco_info
- **Data:** :py:class:`~.DiscoInfo`
- **Source:** :py:class:`~.disco.XEP_0030`
Triggered whenever a ``disco#info`` result stanza is received.
disco_items
- **Data:** :py:class:`~.DiscoItems`
- **Source:** :py:class:`~.disco.XEP_0030`
Triggered whenever a ``disco#items`` result stanza is received.
disconnected
- **Data:** ``str``, the reason for the disconnect (if any)
- **Source:** :py:class:`~.XMLstream`
Signal that the connection with the XMPP server has been lost.
failed_auth
- **Data:** ``{}``
- **Source:** :py:class:`~.ClientXMPP`, :py:class:`~.XEP_0078`
Signal that the server has rejected the provided login credentials.
gmail_notify
- **Data:** ``{}``
- **Source:** :py:class:`~.plugins.gmail_notify.gmail_notify`
Signal that there are unread emails for the Gmail account associated with the current XMPP account.
gmail_messages
- **Data:** :py:class:`~.Iq`
- **Source:** :py:class:`~.plugins.gmail_notify.gmail_notify`
Signal that there are unread emails for the Gmail account associated with the current XMPP account.
got_online
- **Data:** :py:class:`~.Presence`
- **Source:** :py:class:`~.roster.item.RosterItem`
If a presence stanza is received from a JID which was previously marked as
offline, and the presence has a show type of '``chat``', '``dnd``', '``away``',
or '``xa``', then this event is triggered as well.
got_offline
- **Data:** :py:class:`~.Presence`
- **Source:** :py:class:`~.roster.item.RosterItem`
Signal that an unavailable presence stanza has been received from a JID.
groupchat_invite
- **Data:** :py:class:`~.Message`
- **Source:** :py:class:`~.XEP_0045`
When a Mediated MUC invite is received.
groupchat_direct_invite
- **Data:** :py:class:`~.Message`
- **Source:** :py:class:`~.XEP_0249`
When a Direct MUC invite is received.
groupchat_message
- **Data:** :py:class:`~.Message`
- **Source:** :py:class:`~.XEP_0045`
Triggered whenever a message is received from a multi-user chat room.
groupchat_presence
- **Data:** :py:class:`~.Presence`
- **Source:** :py:class:`~.XEP_0045`
Triggered whenever a presence stanza is received from a user in a multi-user chat room.
groupchat_subject
- **Data:** :py:class:`~.Message`
- **Source:** :py:class:`~.XEP_0045`
Triggered whenever the subject of a multi-user chat room is changed, or announced when joining a room.
killed
- **Data:** ``{}``
- **Source:** :class:`~.XMLStream`
When the stream is aborted.
message
- **Data:** :py:class:`~.Message`
- **Source:** :py:class:`BaseXMPP <.BaseXMPP>`
Makes the contents of message stanzas available whenever one is received. Be
sure to check the message type in order to handle error messages.
message_error
- **Data:** :py:class:`~.Message`
- **Source:** :py:class:`BaseXMPP <.BaseXMPP>`
Makes the contents of message stanzas available whenever one is received.
Only handler messages with an ``error`` type.
message_form
- **Data:** :py:class:`~.Form`
- **Source:** :py:class:`~.XEP_0004`
Currently the same as :term:`message_xform`.
message_xform
- **Data:** :py:class:`~.Form`
- **Source:** :py:class:`~.XEP_0004`
Triggered whenever a data form is received inside a message.
muc::[room]::got_offline
- **Data:** :py:class:`~.Presence`
- **Source:** :py:class:`~.XEP_0045`
- **Name parameters:** ``room``, the room this is coming from.
Triggered whenever we receive an unavailable presence from a MUC occupant.
muc::[room]::got_online
- **Data:** :py:class:`~.Presence`
- **Source:** :py:class:`~.XEP_0045`
- **Name parameters:** ``room``, the room this is coming from.
Triggered whenever we receive a presence from a MUC occupant
we do not have in the local cache.
muc::[room]::message
- **Data:** :py:class:`~.Message`
- **Source:** :py:class:`~.XEP_0045`
- **Name parameters:** ``room``, the room this is coming from.
Triggered whenever we receive a message from a MUC we are in.
muc::[room]::presence
- **Data:** :py:class:`~.Presence`
- **Source:** :py:class:`~.XEP_0045`
- **Name parameters:** ``room``, the room this is coming from.
muc::[room]::self-presence
- **Data:** :class:`~.Presence`
- **Source:** :class:`~.XEP_0045`
- **Name parameters:** ``room``, the room this is coming from.
Triggered whenever we receive a presence with status code ``110``
(for example on MUC join, or nick change).
muc::[room]::presence-error
- **Data:** :class:`~.Presence`
- **Source:** :class:`~.XEP_0045`
- **Name parameters:** ``room``, the room this is coming from.
Triggered whenever we receive a presence of ``type="error"`` from
a MUC.
presence_available
- **Data:** :py:class:`~.Presence`
- **Source:** :py:class:`~.BaseXMPP`
A presence stanza with a type of '``available``' is received.
presence_error
- **Data:** :py:class:`~.Presence`
- **Source:** :py:class:`~.BaseXMPP`
A presence stanza with a type of '``error``' is received.
presence_form
- **Data:** :py:class:`~.Form`
- **Source:** :py:class:`~.XEP_0004`
This event is present in the XEP-0004 plugin code, but is currently not used.
presence_probe
- **Data:** :py:class:`~.Presence`
- **Source:** :py:class:`~.BaseXMPP`
A presence stanza with a type of '``probe``' is received.
presence_subscribe
- **Data:** :py:class:`~.Presence`
- **Source:** :py:class:`~.BaseXMPP`
A presence stanza with a type of '``subscribe``' is received.
presence_subscribed
- **Data:** :py:class:`~.Presence`
- **Source:** :py:class:`~.BaseXMPP`
A presence stanza with a type of '``subscribed``' is received.
presence_unavailable
- **Data:** :py:class:`~.Presence`
- **Source:** :py:class:`~.BaseXMPP`
A presence stanza with a type of '``unavailable``' is received.
presence_unsubscribe
- **Data:** :py:class:`~.Presence`
- **Source:** :py:class:`~.BaseXMPP`
A presence stanza with a type of '``unsubscribe``' is received.
presence_unsubscribed
- **Data:** :py:class:`~.Presence`
- **Source:** :py:class:`~.BaseXMPP`
A presence stanza with a type of '``unsubscribed``' is received.
roster_update
- **Data:** :py:class:`~.Roster`
- **Source:** :py:class:`~.ClientXMPP`
An IQ result containing roster entries is received.
sent_presence
- **Data:** ``{}``
- **Source:** :py:class:`~.roster.multi.Roster`
Signal that an initial presence stanza has been written to the XML stream.
session_end
- **Data:** ``{}``
- **Source:** :py:class:`~.xmlstream.XMLstream`
Signal that a connection to the XMPP server has been lost and the current
stream session has ended. Equivalent to :term:`disconnected`, unless the
`XEP-0198: Stream Management <http://xmpp.org/extensions/xep-0198.html>`_
plugin is loaded.
Plugins that maintain session-based state should clear themselves when
this event is fired.
session_start
- **Data:** ``{}``
- **Source:** :py:class:`.ClientXMPP`,
:py:class:`~.ComponentXMPP`,
:py:class:`~.XEP-0078`
Signal that a connection to the XMPP server has been made and a session has been established.
session_resumed
- **Data:** ``{}``
- **Source:** :class:`~.XEP_0198`
When Stream Management manages to resume an ongoing session
after reconnecting.
socket_error
- **Data:** ``Socket`` exception object
- **Source:** :py:class:`~.xmlstream.XMLstream`
stream_error
- **Data:** :py:class:`~.StreamError`
- **Source:** :py:class:`~.BaseXMPP`
reactions
- **Data:** :py:class:`~.Message`
- **Source:** :py:class:`~.XEP_0444`
When a message containing reactions is received.
carbon_received
- **Data:** :py:class:`~.Message`
- **Source:** :py:class:`~.XEP_0280`
When a carbon for a received message is received.
carbon_sent
- **Data:** :py:class:`~.Message`
- **Source:** :py:class:`~.XEP_0280`
When a carbon for a sent message (from another of our resources) is received.
marker
- **Data:** :py:class:`~.Message`
- **Source:** :py:class:`~.XEP_0333`
Whenever a chat marker is received (any of them).
marker_received
- **Data:** :py:class:`~.Message`
- **Source:** :py:class:`~.XEP_0333`
Whenever a ``<received/>`` chat marker is received.
marker_displayed
- **Data:** :py:class:`~.Message`
- **Source:** :py:class:`~.XEP_0333`
Whenever a ``<displayed/>`` chat marker is received.
marker_acknowledged
- **Data:** :py:class:`~.Message`
- **Source:** :py:class:`~.XEP_0333`
Whenever an ``<acknowledged/>`` chat marker is received.
attention
- **Data:** :py:class:`~.Message`
- **Source:** :py:class:`~.XEP_0224`
Whenever a message containing an attention payload is received.
message_correction
- **Data:** :py:class:`~.Message`
- **Source:** :py:class:`~.XEP_0308`
Whenever a message containing a correction is received.
receipt_received
- **Data:** :py:class:`~.Message`
- **Source:** :py:class:`~.XEP_0184`
Whenever a message receipt is received.
jingle_message_propose
- **Data:** :py:class:`~.Message`
- **Source:** :py:class:`~.XEP_0353`
jingle_message_retract
- **Data:** :py:class:`~.Message`
- **Source:** :py:class:`~.XEP_0353`
jingle_message_accept
- **Data:** :py:class:`~.Message`
- **Source:** :py:class:`~.XEP_0353`
jingle_message_proceed
- **Data:** :py:class:`~.Message`
- **Source:** :py:class:`~.XEP_0353`
jingle_message_reject
- **Data:** :py:class:`~.Message`
- **Source:** :py:class:`~.XEP_0353`
room_activity
- **Data:** :py:class:`~.Presence`
- **Source:** :py:class:`~.XEP_0437`
When a room activity stanza is received by a client.
room_activity_bare
- **Data:** :py:class:`~.Presence`
- **Source:** :py:class:`~.XEP_0437`
When an empty room activity stanza is received
(typically by a component).
sm_enabled
- **Data:** :py:class:`~.stanza.Enabled`
- **Source:** :py:class:`~.XEP_0198`
When Stream Management is successfully enabled.
sm_disabled
- **Data:** ``{}``
- **Source:** :py:class:`~.XEP_0198`
When Stream Management gets disabled (when disconnected).
ibb_stream_start
- **Data:** :py:class:`~.stream.IBBBytestream`
- **Source:** :py:class:`~.XEP_0047`
When a stream is successfully opened with a remote peer.
ibb_stream_end
- **Data:** :py:class:`~.stream.IBBBytestream`
- **Source:** :py:class:`~.XEP_0047`
When an opened stream closes.
ibb_stream_data
- **Data:** :py:class:`~.stream.IBBBytestream`
- **Source:** :py:class:`~.XEP_0047`
When data is received on an opened stream.
stream:[stream id]:[peer jid]
- **Data:** :py:class:`~.stream.IBBBytestream`
- **Source:** :py:class:`~.XEP_0047`
- **Name parameters:** ``stream id``, the id of the stream,
and ``peer jid`` the JID of the entity the stream is established
with.
When a stream is opened (with specific sid and jid parameters).
command
- **Data:** :py:class:`~.Iq`
- **Source:** :py:class:`~.XEP_0050`
When an ad-hoc command is received.
command_[action]
- **Data:** :py:class:`~.Iq`
- **Source:** :py:class:`~.XEP_0050`
- **Name parameters:** ``action``, the action referenced in
the command payload.
When a command with the specific action is received.
pubsub_publish
- **Data:** :py:class:`~.Message`
- **Source:** :py:class:`~.XEP_0060`
When a pubsub event of type ``publish`` is received.
pubsub_retract
- **Data:** :py:class:`~.Message`
- **Source:** :py:class:`~.XEP_0060`
When a pubsub event of type ``retract`` is received.
pubsub_purge
- **Data:** :py:class:`~.Message`
- **Source:** :py:class:`~.XEP_0060`
When a pubsub event of type ``purge`` is received.
pubsub_delete
- **Data:** :py:class:`~.Message`
- **Source:** :py:class:`~.XEP_0060`
When a pubsub event of type ``delete`` is received.
pubsub_config
- **Data:** :py:class:`~.Message`
- **Source:** :py:class:`~.XEP_0060`
When a pubsub event of type ``config`` is received.
pubsub_subscription
- **Data:** :py:class:`~.Message`
- **Source:** :py:class:`~.XEP_0060`
When a pubsub event of type ``subscription`` is received.
Dedicated PubSub Events
=======================
The :class:`~.XEP_0060` plugin (and :class:`~.XEP_0163` plugin, which uses
the former) allows other plugins to map specific namespaces in
PubSub notifications to a dedicated name prefix.
The current list of plugin prefixes is the following:
- ``bookmarks``: :class:`~.XEP_0048`
- ``user_location``: :class:`~.XEP_0080`
- ``avatar_metadata``: :class:`~.XEP_0084`
- ``avatar_data``: :class:`~.XEP_0084`
- ``user_mood``: :class:`~.XEP_0107`
- ``user_activity``: :class:`~.XEP_0108`
- ``user_tune``: :class:`~.XEP_0118`
- ``reachability``: :class:`~.XEP_0152`
- ``user_nick``: :class:`~.XEP_0163`
- ``user_gaming``: :class:`~.XEP_0196`
- ``mix_participant_info``: :class:`~.XEP_0369`
- ``mix_channel_info``: :class:`~.XEP_0369`
.. glossary::
:sorted:
[plugin]_publish
- **Data:** :py:class:`~.Message`
- **Source:** :py:class:`~.XEP_0060`
When a pubsub event of type ``publish`` is received.
[plugin]_retract
- **Data:** :py:class:`~.Message`
- **Source:** :py:class:`~.XEP_0060`
When a pubsub event of type ``retract`` is received.
[plugin]_purge
- **Data:** :py:class:`~.Message`
- **Source:** :py:class:`~.XEP_0060`
When a pubsub event of type ``purge`` is received.
[plugin]_delete
- **Data:** :py:class:`~.Message`
- **Source:** :py:class:`~.XEP_0060`
When a pubsub event of type ``delete`` is received.
[plugin]_config
- **Data:** :py:class:`~.Message`
- **Source:** :py:class:`~.XEP_0060`
When a pubsub event of type ``config`` is received.
[plugin]_subscription
- **Data:** :py:class:`~.Message`
- **Source:** :py:class:`~.XEP_0060`
When a pubsub event of type ``subscription`` is received.
|