def test_init_with_timeout(): client = SlackClient(None, connect=False) assert client.webapi.api.timeout == 10 # seconds default timeout expected_timeout = 42 # seconds client = SlackClient(None, connect=False, timeout=expected_timeout) assert client.webapi.api.timeout == expected_timeout
def __init__(self): super(WithdrawalExecutor, self).__init__() self.setDaemon(False) self._db_context = DBContext() self._slackclient = SlackClient(API_TOKEN) self._should_stop = False self._withdrawal_interval = 1
def __init__(self): super(ReportPublisher, self).__init__() self.setDaemon(False) self._db_context = DBContext() self._slackclient = SlackClient(API_TOKEN) self._should_stop = False self._interval = 3600
def run(): # pragma: no cover """Start the dispatcher running.""" slack_client = SlackClient(settings.SLACKBOT_API_TOKEN) while True: run_once(slack_client, job_configs.config) time.sleep(1)
def report_to_slack(cls, msg, file_path): try: slack_client = SlackClient(API_TOKEN) classname = cls.__class__.__name__ slack_client.send_message(SLACK_CHANNEL, f"[{classname}] : {msg}") slack_client.upload_file(SLACK_CHANNEL, "image", file_path, None) except: pass
def __init__(self): self._client = SlackClient(settings.API_TOKEN, bot_icon=settings.BOT_ICON if hasattr( settings, 'BOT_ICON') else None, bot_emoji=settings.BOT_EMOJI if hasattr( settings, 'BOT_EMOJI') else None) self._plugins = PluginsManager() self._dispatcher = MessageDispatcher(self._client, self._plugins)
def __init__(self, api_token=None): if api_token is None: api_token = settings.API_TOKEN self._client = SlackClient(api_token, bot_icon=settings.BOT_ICON if hasattr( settings, 'BOT_ICON') else None, bot_emoji=settings.BOT_EMOJI if hasattr( settings, 'BOT_EMOJI') else None) self._plugins = PluginsManager() self._dispatcher = MessageDispatcher(self._client, self._plugins) self._stop = threading.Event()
def __init__(self): self._client = SlackClient( CONFIG.slack_api_token, timeout=settings.TIMEOUT if hasattr(settings, 'TIMEOUT') else None, bot_icon=settings.BOT_ICON if hasattr(settings, 'BOT_ICON') else None, bot_emoji=settings.BOT_EMOJI if hasattr(settings, 'BOT_EMOJI') else None) self._plugins = PluginsManager() self._dispatcher = MessageDispatcher(self._client, self._plugins, settings.ERRORS_TO)
def handle_message(text, expect_reaction=True): client = SlackClient("api_token", connect=False) plugins = PluginsManager() dispatcher = MessageDispatcher(client, plugins, None) msg = [ "respond_to", {"text": text, "channel": "channel", "ts": str(time.mktime(T0.timetuple()))}, ] if expect_reaction: with assert_slack_client_reacts_to_message(): dispatcher.dispatch_msg(msg) else: with assert_slack_client_doesnt_react_to_message(): dispatcher.dispatch_msg(msg)
def loop(): """ 議論終了コマンドが送信されるまでメッセージの書き出しを行う関数 """ client = SlackClient(API_TOKEN) # ユーザーidからユーザー名を取得するため user_dict = get_user_dict() keys = [k for k, v in user_dict.items() if v == 'comhelper'] comhelper_user_id = keys[0] return_flag = True # 議論終了コマンドが送信されるまでループを続ける while return_flag: events = SlackClient.rtm_read(client) for event in events: event_type = event.get('type') if event_type == 'message': message_text = event.get('text') if message_text == '<@' + comhelper_user_id + "> 議論を終了して": # 議論終了コマンドが送信されたらループを抜ける return_flag = False else: # ユーザー名を確認しつつ,メッセージをテキストファイルに一時保存 send_user_id = event.get('user') send_user_name = user_dict[send_user_id] add_commit_message = [] add_commit_message.append('echo "' + send_user_name + ': ' + message_text + '" >> commit.txt') try: cmd_return = subprocess.run(add_commit_message, shell=True) except subprocess.SubprocessError: return 'echo >> commit.txt の実行でエラーが発生しました。' time.sleep(1) return '議論を終了しました!\n次の議論開始前にコミットしてください。'
def handle_message(text, *, category="respond_to", expect_reaction=True): client = SlackClient("api_token", connect=False) plugins = PluginsManager() plugins.init_plugins() dispatcher = MessageDispatcher(client, plugins, None) msg = [ category, { "text": text, "channel": "channel", "ts": TS }, ] if expect_reaction: with assert_slack_client_reacts_to_message(): dispatcher.dispatch_msg(msg) else: with assert_slack_client_doesnt_react_to_message(): dispatcher.dispatch_msg(msg)
def handle_callback_webhook(): """Respond to callback webhook.""" try: channel = request.args["channel"] thread_ts = request.args["thread_ts"] token = request.args["token"] except KeyError: abort(400) try: timestamp, signature = token.split(":", 1) except ValueError: abort(400) try: validate_hmac( timestamp.encode("utf8"), settings.EBMBOT_WEBHOOK_SECRET, signature.encode("utf8"), max_age=settings.EBMBOT_WEBHOOK_TOKEN_TTL, ) except InvalidHMAC: abort(403) try: data = json.loads(request.data.decode()) except json.decoder.JSONDecodeError: abort(400) try: message = data["message"] except KeyError: abort(400) client = SlackClient(settings.SLACKBOT_API_TOKEN) notify_slack(client, channel=channel, thread_ts=thread_ts, message=message) return ""
import os import logging import time from slackbot.slackclient import SlackClient import dotenv logging.basicConfig(level=logging.DEBUG) dotenv.load_dotenv(verbose=True) token = os.environ["SLACKBOT_API_TOKEN"] client = SlackClient(token) client.ping() client.send_message("#random", "hello") client.rtm_send_message("#random", "hello from RTM") print("hai") time.sleep(1) print("hoi")
from plugins.gomisute.logs.LogHandler import LogHandler import configparser logger = LogHandler('service') conf = configparser.ConfigParser() conf.read('./config.ini') API_TOKEN = conf['slack']['BOT_USER_OAUTH_ACCESS_TOKEN'] attempt_user = conf['slack']['attempt_user'] endpoint = conf['chaplus']['endpoint'] chaplus_key = conf['chaplus']['api_key'] chaplus_dist = f'{endpoint}?apikey={chaplus_key}' client = SlackClient(API_TOKEN) @respond_to(r'^(?=.*[ごみ|ゴミ])(?!.*(終|代わ|更新))') def sendTrashDuty2525AND2721(message, *args): """ (ごみorゴミ)を含むメッセージに対し 両室の次回のごみ捨て当番をリプライする. Args: message (Message) : メッセージに関する情報を持ったクラスのインスタンス args (str) : respond_to()内の正規表現にマッチしたメッセージ本文 Returns: None """
def get_slack_client(): return SlackClient(API_TOKEN) if slack_client is None else slack_client
def __init__(self): self._client = SlackClient(settings.API_TOKEN) self._plugins = PluginsManager() self._dispatcher = MessageDispatcher(self._client, self._plugins)
import os import time import re from slackbot.slackclient import SlackClient # instantiate Slack client slack_client = SlackClient(os.environ.get('SLACK_BOT_TOKEN')) # starterbot's user ID in Slack: value is assigned after the bot starts up starterbot_id = None # constants RTM_READ_DELAY = 1 # 1 second delay between reading from RTM EXAMPLE_COMMAND = "do" MENTION_REGEX = "^<@(|[WU].+?)>(.*)" def parse_bot_commands(slack_events): """ Parses a list of events coming from the Slack RTM API to find bot commands. If a bot command is found, this function returns a tuple of command and channel. If its not found, then this function returns None, None. """ for event in slack_events: if event["type"] == "message" and not "subtype" in event: user_id, message = parse_direct_mention(event["text"]) if user_id == starterbot_id: return message, event["channel"] return None, None def parse_direct_mention(message_text):
def slack_client(): c = SlackClient(None, connect=False) c.channels = slackclient_data.CHANNELS c.users = slackclient_data.USERS return c
def do_job(job): slack_client = SlackClient("api_token", connect=False) job_dispatcher = JobDispatcher(slack_client, job, config) job_dispatcher.do_job()