• Stars
    star
    1,330
  • Rank 34,064 (Top 0.7 %)
  • Language
    Python
  • License
    MIT License
  • Created about 8 years ago
  • Updated 20 days ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

💬 A community-driven python bot that aims to be as simple as possible to serve humans with their everyday tasks

JARVIS on Messenger

Just A Rather Very Intelligent System, now on Messenger!

Build Status Python PEP8 Gitmoji License Gitter Contributors Beginner Issues Pull Requests Closed

Messenger is now used by 1.2 billion people every month. With the launch of Send/Receive API, bots are about to take over.

Usage

JARVIS is at your service here.

Buy Me A Coffee Become a Patron!

Demo (Vimeo)

JARVIS on Messenger Demo

Why?

I created JARVIS with two goals in mind:

  1. It should have a lot of useful features (both fun and commonly used).
  2. Anyone can contribute to this project. (As this is module-based, anybody with a decent knowledge of Python can contribute.) One of the prime goals of this project is to lower the entry barrier into the world of open source.

Take a look at the contributing guidelines to see how easy it is to add your own code. I'll be waiting for your pull request! 😉

A massive Thank You to all contributors, and congratulations to people who made their first open-source contribution! 🎉

Modules

Feel free to add to this list by opening an Issue/Pull Request.

Name Sample Query Source (w/ Attribution)
anime death note anime Kitsu
book anything you want book Powered by Goodreads
bye goodbye ---
coin flip a coin ---
currency usd to eur rate Fixer.io
dice roll a die ---
dictionary define comfort Words API
fact tell me a fact JARVIS
hello Hi, Jarvis! ---
help What can you do? ---
joke tell me a joke JARVIS
lyrics paradise lyrics Powered by musiXmatch
movie iron man 2 movie plot
music songs by linkin park Spotify
news latest news Powered by NewsAPI
ping ping google.com Is it up?
quote random quote JARVIS
request report a bug
request a feature
---
thanks Thank you! ---
time time in seattle TimeZoneDB API
url shorten google.com
expand http://goo.gl/7aqe
Google URL Shortener
video videos of sia YouTube
weather weather in london Info provided by OpenWeatherMap
wiki wiki html MediaWiki API
xkcd show a random xkcd comic xkcd

More sample queries can be found here.

Structure

├── modules/         # home for various features
├── modules/src/     # code goes here
├── modules/tests/   # tests go here
├── data/            # home for shared data
├── templates/       # for sending structured messages
├── CONTRIBUTING.md  # contributing guidelines
└── jarvis.py        # the main bot

Local Development / Testing

  1. Clone this repo.
  2. Linux:
    a) Debian (Ubuntu, Linux Mint, etc.): sudo apt-get install python-dev libffi-dev libssl-dev
    b) Arch Linux: sudo pacman -S python2 libffi openssl
    c) Fedora: sudo yum install python-devel libffi-devel openssl-devel
    Windows: These should already be pre-installed in your Python bundle.
    Mac/OS X:
    a) If you install Python using brew, the relevant headers are already installed for you. In other words, you don't need python-devel.
    b) brew install pkg-config libffi
    export PKG_CONFIG_PATH=/usr/local/Cellar/libffi/3.0.13/lib/pkgconfig/ # May change with libffi version
    pip install cffi
    c) brew install libtins
  3. pip install -r requirements.txt
  4. python jarvis.py
  5. Visit the following URLs to see results:
    http://localhost:5000/process/?q=<<YOUR_QUERY>> returns the intent of the query.
    http://localhost:5000/search/?q=<<YOUR_QUERY>> returns the search result of the query.

result

result

  • The "process" endpoint returns what module the system classifies your query e.g. a dictionary query, a song search, etc. Visit the following URLs to understand the output format:
    http://localhost:5000/process/?q=tell%20me%20a%20joke
    http://localhost:5000/process/?q=time%20in%20seattle
    http://localhost:5000/process/?q=convert%2025%20usd%20to%20eur

You can mock the results for local testing by adding your queries here.

  • The "search" endpoint returns the actual bot output, which you get when you interact with the bot using that query.

Note that for the search query to work, you have to set your own key (of the module that you want to test) in config.py

If you want a public endpoint, use the below button to deploy on Heroku and fill the relevant API keys that you would like to use:

Deploy

TL;DR for Beginners

  1. J.A.R.V.I.S. runs on Python 2
  2. For the search query to work, you have to set your own key (of the module that you want to test) in config.py
  3. The best place to ask anything: https://gitter.im/swapagarwal/JARVIS-on-Messenger
  4. Some issues are reserved for you! Low-Hanging Fruit
  5. If you're working on something, let everyone know by either creating an issue or commenting on an existing one so that work is not duplicated.
  6. Prefer using an IDE (Use PyCharm if you don't have any preference yet)

History

I started out with a rule-based model, but it didn't scale well so now I've shifted to Natural Language Processing. Rest assured, I'll strive to keep it as simple as possible so that you, yes you, can contribute!

If you'd like to contribute to the old model, you are welcome to do so as well. I've created a new branch legacy for this purpose. I'll be accepting Pull Requests to this branch also. 😄

P.S. If you've come this far, you might as well contribute. Looking for a place to start? Take a look at some of the low-hanging fruits!

References

More Repositories

1

swag-for-dev

😎 swag opportunities for developers
JavaScript
4,223
star
2

mediumship

📚 Read all Medium stories for free!
JavaScript
591
star
3

awesome-eli5

👶 Technical concepts explained in layman terms! git.io/eli5
379
star
4

awesome-inspiration

🔥 A curated list of content worth sharing to help you get inspired! ⚡
250
star
5

geeksay

🤓 geeks will ctrl+s the world!
HTML
208
star
6

automata-from-regex

An interactive c++ program to construct NFA, DFA, and minimized DFA from a given regular expression.
C++
97
star
7

awesome-gitbook-plugins

📚 Supercharge your books with the best of GitBook plugins!
57
star
8

medium-play

🔉 Listen to audio versions of medium stories.
JavaScript
22
star
9

SaveURLtoDropbox

☁️ Saving files in Dropbox just got easier!
HTML
21
star
10

BlackJack

A simple android blackjack game
Java
19
star
11

dropbox_ignore

🔥 .gitignore for Dropbox!
Python
16
star
12

awesome-dropbox

A curated list of awesome Dropbox SDKs, open source libraries, and cool tools and services powered by Dropbox.
14
star
13

MyBuddy

📱 A Student's Buddy (Android App) for everyday needs
Java
10
star
14

pm

💻 An easy (but secure) way to quickly change your bash password
Shell
10
star
15

ns3-simulation

Effect of buffer size on TCP and UDP flows
C++
9
star
16

shoutlink

✨ A temporary url shortener with Heroku-like memorable random names, powered by Sinatra
Ruby
8
star
17

OnlineThesisManager

An online thesis management system
PHP
7
star
18

bunnies-and-badgers

A tower defense game in python where the hero, the bunny, has to defend a castle against an attacking horde of badgers
Python
7
star
19

dxclub.io

👉 by developers; for developers 👈
HTML
6
star
20

swapagarwal.github.io

🏡 127.0.0.1 sweet 127.0.0.1
Vue
6
star
21

sendgrid-flask-heroku

🐧 Try out SendGrid by sending your first email within seconds with this minimalistic yet powerful integration
Python
6
star
22

awesomeconf.xyz

An Awesome Conference
CSS
5
star
23

log

Captain's Log, USS Enterprise (NCC-1701)
4
star
24

socket_programming_in_c

Client-Server programming using both TCP and UDP sockets
C
4
star
25

jarvis

Python
4
star
26

snippets

My collection of useful code snippets/recipes/scripts/macros
C++
4
star
27

learning-vue

https://laracasts.com/series/learn-vue-2-step-by-step, https://laracasts.com/series/testing-vue
HTML
4
star
28

LeetCodeGolf

LeetCode meets CodeGolf
Python
3
star
29

Z

PC Assistant for Windows
C#
3
star
30

compiler

Designing a language and building a compiler to generate its MIPS code
C++
3
star
31

aws-remote

Controlling AWS made easy!
Go
3
star
32

SaveGithubRepos2Cloud

Save all your repos in cloud.
JavaScript
3
star
33

state-of-the-vue-ecosystem

[JSFoo: VueDay '19] A look at the current state of Vue.js
3
star
34

dotfiles

./install
Shell
2
star
35

rocket-search

Powered by Bottle
Python
2
star
36

programming-challenges

Repo containing my solutions to various programming challenges
Python
2
star
37

sam-apps

JavaScript
2
star
38

GTrade

Java
2
star
39

gojudge

Go
2
star
40

joey

2
star
41

RealEstatePropertyManagement

A Visual C++ project for serving owners to sell or rent their properties and property buyers to search and identify properties that match their requirement.
C++
2
star
42

vue-social

A Vue.js Plugin for all things social 😉
JavaScript
2
star
43

temp

contains unfinished work
PHP
2
star
44

ProjectEuler

My solutions to Project Euler problems
C++
2
star
45

slack-is-the-new-terminal

use slack for all your terminal needs!
2
star
46

brainf--k

A BF interpreter
Python
2
star
47

locus-client

Java
2
star
48

cfd

2
star
49

RocketClassifier

A web-spam classifier
C++
2
star
50

api-starter-kit

2
star
51

Controllr

Take control of usage time
Python
2
star
52

hashapi

Python
2
star
53

todo-gamified

A to-do list app built using ruby on rails
Ruby
2
star
54

pokelog

Pokédex in Prolog
Prolog
2
star
55

HabitConquerer

inspired by habitrpg.com
2
star
56

CodeChefSubmitHelper

A Chrome extension that adds a submit button to past contest problems.
JavaScript
2
star
57

MachineLearning

A Repo containing my solutions to machine learning assignments
MATLAB
2
star
58

locus-server

2
star
59

new-kids-in-browserland

[JSFoo '18] Supercharge your web apps using the new browser APIs
CSS
2
star
60

kickstart-your-vuetiful-journey-workshop

This workshop aims to serve as a first day guide to Vue.js
Vue
2
star
61

learn-vue-app

💃 Enjoy the Vue!
Vue
1
star
62

thesemetrics

An easy application traffic analytics tool.
TypeScript
1
star
63

writes

JavaScript
1
star
64

what-to-eat

For times when you can't decide what to eat!
JavaScript
1
star