diff options
Diffstat (limited to 'wee_slack.py')
-rw-r--r-- | wee_slack.py | 84 |
1 files changed, 16 insertions, 68 deletions
diff --git a/wee_slack.py b/wee_slack.py index 5dc4056..689abb1 100644 --- a/wee_slack.py +++ b/wee_slack.py @@ -39,10 +39,10 @@ SLACK_API_TRANSLATOR = { } -def dbg(message, f=False): +def dbg(message, fout=False): if debug_mode == True: message = "DEBUG: " + str(message) - if f: + if fout: file('/tmp/debug.log','a+').writelines(message+'\n') else: w.prnt("", message) @@ -175,11 +175,10 @@ class SlackServer(object): t = time.time() async_slack_api_request("slack.com", self.token, "rtm.start", {"ts":t}) def connected_to_slack(self, login_data): - dbg("connected..") if login_data["ok"] == True: self.domain = login_data["team"]["domain"] + ".slack.com" + dbg("connected to %s" % self.domain) self.identifier = self.domain - dbg(self.domain) self.nick = login_data["self"]["name"] self.create_local_buffer() @@ -459,10 +458,10 @@ def slack_command_cb(data, current_buffer, args): function_name, args = a[0], " ".join(a[1:]) else: function_name, args = a[0], None - try: - cmds[function_name](current_buffer, args) - except KeyError: - w.prnt("", "Command not found or exception: "+function_name) +# try: + cmds[function_name](current_buffer, args) +# except KeyError: +# w.prnt("", "Command not found or exception: "+function_name) return w.WEECHAT_RC_OK def command_talk(current_buffer, args): @@ -511,14 +510,13 @@ def command_markread(current_buffer, args): servers.find(domain).channels.find(channel).mark_read() def command_neveraway(current_buffer, args): - buf = channels.find(current_buffer).server.buffer global never_away if never_away == True: never_away = False - w.prnt(buf, "unset never_away") + dbg("unset never_away") else: never_away = True - w.prnt(buf, "set as never_away") + dbg("set never_away") def command_printvar(current_buffer, args): w.prnt("", str(eval(args))) @@ -778,61 +776,30 @@ def hotlist_cache_update_cb(data, remaining_calls): w.infolist_free(prev_hotlist) return w.WEECHAT_RC_OK -#def buffer_opened_cb(signal, sig_type, data): -# name = w.buffer_get_string(data, "name") -# channel = channels.find(name) -# try: -# channel.set_active() -# channel.attach_buffer() -# channel.get_history() - return w.WEECHAT_RC_OK - def buffer_closing_cb(signal, sig_type, data): if channels.find(data): channels.find(data).closed() -# channels.find(data).detach_buffer() return w.WEECHAT_RC_OK def buffer_switch_cb(signal, sig_type, data): - #NOTE: we flush both the next and previous buffer so that all read pointer id up to date global previous_buffer, hotlist if channels.find(previous_buffer): channels.find(previous_buffer).mark_read() channel_name = current_buffer_name() previous_buffer = data - -# if current_buffer_name().startswith(domain): -# channel_name = current_buffer_name(short=True) -# #TESTING ... this code checks to see if there are any unread messages and doesn't reposition the read marker if there are -# count = 0 -# while w.infolist_next(hotlist): -# if w.infolist_pointer(hotlist, "buffer_pointer") == w.current_buffer(): -# for i in [0,1,2,3]: -# count += w.infolist_integer(hotlist, "count_0%s" % (i)) -# if count == 0: -# if channels.find(previous_buffer): -# channels.find(previous_buffer).mark_read() -# #end TESTING -# previous_buffer = channel_name -# else: -# previous_buffer = None return w.WEECHAT_RC_OK def typing_notification_cb(signal, sig_type, data): global typing_timer now = time.time() if typing_timer + 4 < now: -# try: -# for server in servers: channel = channels.find(current_buffer_name()) if channel: identifier = channel.identifier request = {"type":"typing","channel":identifier} channel.server.ws.send(json.dumps(request)) typing_timer = now -# except: -# pass return w.WEECHAT_RC_OK #NOTE: figured i'd do this because they do @@ -851,11 +818,11 @@ def slack_connection_persistence_cb(data, remaining_calls): def slack_never_away_cb(data, remaining): global never_away if never_away == True: - #w.prnt("", 'updating status as back') - name = channels.find("#general") - request = {"type":"typing","channel":name} - ws.send(json.dumps(request)) - #command_back(None) + for server in servers: + identifier = server.channels.find("slackbot").identifier + request = {"type":"typing","channel":identifier} + #request = {"type":"typing","channel":"slackbot"} + server.ws.send(json.dumps(request)) return w.WEECHAT_RC_OK ### Slack specific requests @@ -870,7 +837,6 @@ def async_slack_api_request(domain, token, request, post_data, priority=False): post = {"post": "1", "postfields": post_data} url = 'https://%s/api/%s' % (domain, request) queue_item = ['url:%s' % (url), post, 20000, 'url_processor_cb', post_elements] - dbg(queue_item) if priority != True: queue.append(QueueItem(queue_item, 'do_url', 'url_processor_cb')) else: @@ -878,7 +844,6 @@ def async_slack_api_request(domain, token, request, post_data, priority=False): queue = [] async_queue_lock=False -#funny, right? class QueueItem(object): def __init__(self, data, method, callback_method=None): @@ -902,13 +867,7 @@ def do_url(item): except: pass command = 'curl --data "%s" %s' % (item[1]["postfields"], item[0][4:]) - dbg(command) w.hook_process(command, 10000, item[3], item[4]) -# pass - -#def do_mark_read(item): -# dbg('queue ran mark_read') -# channels.find(str(item)).mark_read(False) def async_queue_cb(data, remaining_calls): global async_queue_lock @@ -923,10 +882,10 @@ def async_queue_cb(data, remaining_calls): async_queue_lock=False return w.WEECHAT_RC_OK +#funny, right? big_data = {} def url_processor_cb(data, command, return_code, out, err): data=pickle.loads(data) - dbg(out) global async_queue_lock, big_data identifier = sha.sha(str(data) + command).hexdigest() if not big_data.has_key(identifier): @@ -962,16 +921,6 @@ def url_processor_cb(data, command, return_code, out, err): return w.WEECHAT_RC_OK -#def reply_rtm_start(data): - -#def slack_api_request(request, data): -# t = time.time() -# request += "?t=%s" % t -# data["token"] = slack_api_token -# data = urllib.urlencode(data) -# reply = urllib.urlopen('https://%s/api/%s' % (domain, request), data) -# return reply - def mark_silly_channels_read(channel): if channel in channels_always_marked_read: if channels.find("channel"): @@ -1074,7 +1023,6 @@ if __name__ == "__main__": slack_buffer = None slack_debug = None login_data = None - nick = None name = None never_away = False hotlist = w.infolist_get("hotlist", "", "") @@ -1096,8 +1044,8 @@ if __name__ == "__main__": w.hook_timer(1000, 0, 0, "typing_update_cb", "") w.hook_timer(1000, 0, 0, "buffer_list_update_cb", "") w.hook_timer(1000, 0, 0, "hotlist_cache_update_cb", "") + w.hook_timer(1000 * 3, 0, 0, "slack_never_away_cb", "") w.hook_timer(1000 * 60* 29, 0, 0, "slack_never_away_cb", "") -# w.hook_signal('buffer_opened', "buffer_opened_cb", "") w.hook_signal('buffer_closing', "buffer_closing_cb", "") w.hook_signal('buffer_switch', "buffer_switch_cb", "") w.hook_signal('window_switch', "buffer_switch_cb", "") |