Merge pull request #57 from philipyun103/master
Adding API Access to Plugin Context (Updated)
This commit is contained in:
commit
a4641c8936
5 changed files with 35 additions and 6 deletions
13
README.md
13
README.md
|
@ -89,5 +89,18 @@ Plugins can also run methods on a schedule. This allows a plugin to poll for upd
|
|||
####Plugin misc
|
||||
The data within a plugin persists for the life of the rtmbot process. If you need persistent data, you should use something like sqlite or the python pickle libraries.
|
||||
|
||||
####Direct API Calls
|
||||
You can directly call the Slack web API in your plugins by including the following import:
|
||||
|
||||
from client import slack_client
|
||||
|
||||
You can also rename the client on import so it can be easily referenced like shown below:
|
||||
|
||||
from client import slack_client as sc
|
||||
|
||||
Direct API calls can be called in your plugins in the following form:
|
||||
|
||||
sc.api_call("API.method", "parameters")
|
||||
|
||||
####Todo:
|
||||
Some rtm data should be handled upstream, such as channel and user creation. These should create the proper objects on-the-fly.
|
||||
|
|
10
client.py
Normal file
10
client.py
Normal file
|
@ -0,0 +1,10 @@
|
|||
from rtmbot import RtmBot
|
||||
|
||||
slack_client = None
|
||||
|
||||
|
||||
def init(config):
|
||||
global slack_client
|
||||
bot = RtmBot(config)
|
||||
slack_client = bot.slack_client
|
||||
return bot
|
5
docs/example-plugins/directAPIcall.py
Normal file
5
docs/example-plugins/directAPIcall.py
Normal file
|
@ -0,0 +1,5 @@
|
|||
from __future__ import unicode_literals
|
||||
from client import slack_client as sc
|
||||
|
||||
for user in sc.api_call("users.list")["members"]:
|
||||
print(user["name"], user["id"])
|
10
rtmbot.py
10
rtmbot.py
|
@ -1,9 +1,11 @@
|
|||
#!/usr/bin/env python
|
||||
import sys
|
||||
from argparse import ArgumentParser
|
||||
|
||||
import sys
|
||||
import os
|
||||
import yaml
|
||||
from rtmbot import RtmBot
|
||||
import client
|
||||
|
||||
sys.path.append(os.getcwd())
|
||||
|
||||
|
||||
def parse_args():
|
||||
|
@ -19,7 +21,7 @@ def parse_args():
|
|||
# load args with config path
|
||||
args = parse_args()
|
||||
config = yaml.load(open(args.config or 'rtmbot.conf', 'r'))
|
||||
bot = RtmBot(config)
|
||||
bot = client.init(config)
|
||||
try:
|
||||
bot.start()
|
||||
except KeyboardInterrupt:
|
||||
|
|
|
@ -48,7 +48,7 @@ class RtmBot(object):
|
|||
# initialize stateful fields
|
||||
self.last_ping = 0
|
||||
self.bot_plugins = []
|
||||
self.slack_client = None
|
||||
self.slack_client = SlackClient(self.token)
|
||||
|
||||
def _dbg(self, debug_string):
|
||||
if self.debug:
|
||||
|
@ -56,7 +56,6 @@ class RtmBot(object):
|
|||
|
||||
def connect(self):
|
||||
"""Convenience method that creates Server instance"""
|
||||
self.slack_client = SlackClient(self.token)
|
||||
self.slack_client.rtm_connect()
|
||||
|
||||
def _start(self):
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue