bots: Move contrib_bots to api/bots*.

This will make it convenient to include these bots in Zulip API
releases on pypi.

Fix #5009.
This commit is contained in:
Rohitt Vashishtha 2017-05-30 11:40:19 +05:30 committed by Tim Abbott
parent 7531c4fb26
commit 894adb1e43
110 changed files with 36 additions and 27 deletions

View file

View file

@ -0,0 +1,31 @@
#!/usr/bin/env python
from __future__ import absolute_import
from __future__ import print_function
import os
import sys
our_dir = os.path.dirname(os.path.abspath(__file__))
sys.path.insert(0, os.path.normpath(os.path.join(our_dir)))
# For dev setups, we can find the API in the repo itself.
if os.path.exists(os.path.join(our_dir, '..')):
sys.path.insert(0, '..')
from bots_test_lib import BotTestCase
class TestWikipediaBot(BotTestCase):
bot_name = "wikipedia"
def test_bot(self):
expected = {
"": 'Please enter your message after @mention-bot',
"sssssss kkkkk": ('I am sorry. The search term you provided '
'is not found :slightly_frowning_face:'),
"foo": ('For search term "foo", '
'https://en.wikipedia.org/wiki/Foobar'),
"123": ('For search term "123", '
'https://en.wikipedia.org/wiki/123'),
"laugh": ('For search term "laugh", '
'https://en.wikipedia.org/wiki/Laughter'),
}
self.check_expected_responses(expected)

View file

@ -0,0 +1,60 @@
from __future__ import absolute_import
from __future__ import print_function
import requests
import logging
import re
# See readme.md for instructions on running this code.
class WikipediaHandler(object):
'''
This plugin facilitates searching Wikipedia for a
specific key term and returns the top article from the
search. It looks for messages starting with '@mention-bot'
In this example, we write all Wikipedia searches into
the same stream that it was called from, but this code
could be adapted to write Wikipedia searches to some
kind of external issue tracker as well.
'''
def usage(self):
return '''
This plugin will allow users to directly search
Wikipedia for a specific key term and get the top
article that is returned from the search. Users
should preface searches with "@mention-bot".
'''
def handle_message(self, message, client, state_handler):
bot_response = self.get_bot_wiki_response(message, client)
client.send_reply(message, bot_response)
def get_bot_wiki_response(self, message, client):
help_text = 'Please enter your message after @mention-bot'
query = message['content']
if query == '':
return help_text
query_wiki_link = ('https://en.wikipedia.org/w/api.php?action=query&'
'list=search&srsearch=%s&format=json' % (query,))
try:
data = requests.get(query_wiki_link)
except requests.exceptions.RequestException:
logging.error('broken link')
return
if data.status_code != 200:
logging.error('unsuccessful data')
return
new_content = 'For search term "' + query
if len(data.json()['query']['search']) == 0:
new_content = 'I am sorry. The search term you provided is not found :slightly_frowning_face:'
else:
search_string = data.json()['query']['search'][0]['title'].replace(' ', '_')
url = 'https://en.wikipedia.org/wiki/' + search_string
new_content = new_content + '", ' + url
return new_content
handler_class = WikipediaHandler