Продолжаем тестить или talisman plugin just4fun

Просто из желания протестировать полюбившийся мне уже так сильно Windows Live Writer и из-за недостатка материала я решила выложить написанный мною несколько недель назад плагин для xmpp-muc бота Talisman (Als привет!:) написанном на языке питон. Пригодится знакомым с этим ботом людям, реализует аналогичный функционал бота глюкса, показывает, когда человек с определённым ником или жидом был в конференции последний раз. Так как бот не использует базу данных (это его плюс и минус одновременно) после рестарта бот теряет значения. В будущем большие планы по превращению этого всё-таки во что-то более социальное (выдачи всех ников, с которыми был пользователь, количество сообщений отправленных юзверем за время активности бота), но пока это чисто seen плагин.

   1: #===istalismanplugin===

   2: # -*- coding: utf-8 -*-

   3:

   4: # Endless / talisman rev 84+

   5: # version 0.5RC2 by Tuarisa

   6:

   7: seen_stats = {}

   8:

   9:

  10: def handler_leave(groupchat, nick, aff, jid):

  11:     jid=get_true_jid(groupchat+'/'+nick)

  12:     seen_stats[jid]=[time.gmtime(), 1, nick]

  13:

  14:

  15: def handler_join(groupchat, nick, aff, jid):

  16:     jid=get_true_jid(groupchat+'/'+nick)

  17:     seen_stats[jid]=[time.gmtime(), 0, nick]

  18:

  19:

  20: def handler_seen(type, source, parameters):

  21:

  22:     nicks = GROUPCHATS[source[1]].keys()

  23:     if not parameters:

  24:         reply(type, source, u'фигня какая-то')

  25:         return

  26:

  27:     if not parameters.count('@'):

  28:

  29:         nick=parameters

  30:         truejid=get_true_jid(source[1]+'/'+nick)

  31:         if not nick in nicks:

  32:

  33:             reply(type, source, u'Это кто вообще?')

  34:             return

  35:     else:

  36:         truejid=parameters

  37:         jids=seen_stats.keys()

  38:

  39:         if not truejid in jids:

  40:             reply(type, source, u'Оно тут было?')

  41:             return

  42:     time_now = time.mktime(time.gmtime())

  43:     time_diff = time_now - time.mktime(seen_stats[truejid][0])

  44:     if seen_stats[truejid][1]==0:

  45:         reply(type, source, u'<;' + parameters+u'> зашёл сюда ' +  timeElapsed(time_diff) +  u' назад с ником <'+ seen_stats[truejid][2] +u'>')

  46:         return

  47:

  48:     else:

  49:         reply(type, source, u'<;' + parameters+u'> был тут ' +  timeElapsed(time_diff) + u' назад с ником <'+seen_stats[truejid][2]+u'>')

  50:         return

  51:

  52:

  53:

  54:

  55:

  56:

  57: register_leave_handler(handler_leave)

  58:

  59: register_join_handler(handler_join)

  60:

  61: register_command_handler(handler_seen, 'seen', ['инфо', 'все'], 10, 'Говорит, когда человек был последний раз в сети', 'seen <nick>', ['seen watcher'])

За разъяснениями кода, вдруг чего, в комментарии. Просьба авторство сохранить. Исходники вообще планировалось не выкладывать, ну уж так вышло.

А теперь для завершения тестирования lightbox плагина и самого клиента (в котором можно прописать автоматическое добавление rel=”lightbox” в изображения!) надо вставить какое-нибудь летнее изображение. Или даже два.

2290 04916a7a28a1

Вам нравится? мне тоже

Теперь у меня абсолютно точно есть целых два Windows-приложения, от которых я никогда не откажусь.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *