All Projects → Abdur-rahmaanJ → honeybot

Abdur-rahmaanJ / honeybot

Licence: MIT license
🛩 A python IRC bot with simple plugins dev. Ignited in mauritius, first-timers friendly! Moved to github.com/pyhoneybot/honeybot

Programming Languages

python
139335 projects - #7 most used programming language
C++
36643 projects - #6 most used programming language
CMake
9771 projects

Projects that are alternatives of or similar to honeybot

lita-irc
An IRC adapter for Lita.
Stars: ✭ 19 (-66.67%)
Mutual labels:  irc, irc-bot
Honeybot
🛩 A python IRC bot with simple plugins dev. Ignited in mauritius, first-timers friendly!
Stars: ✭ 48 (-15.79%)
Mutual labels:  irc, tkinter
calculon
Library for writing IRC bots in OCaml, a collection of plugins, and a dramatic robotic actor.
Stars: ✭ 26 (-54.39%)
Mutual labels:  irc, irc-bot
irc.dart
Dart IRC Library
Stars: ✭ 45 (-21.05%)
Mutual labels:  irc, irc-bot
TwitchPy
This is a package you can use to connect with the Twitch API, manage a channel, create bots, etc
Stars: ✭ 22 (-61.4%)
Mutual labels:  irc, irc-bot
bmotion
An Artificial Stupidity script for eggdrop bots
Stars: ✭ 58 (+1.75%)
Mutual labels:  irc, irc-bot
HackServ
Python 3 IRC Bot / Botnet
Stars: ✭ 28 (-50.88%)
Mutual labels:  irc, irc-bot
irc-bot
A simple and modular PHP IRC bot
Stars: ✭ 82 (+43.86%)
Mutual labels:  irc, irc-bot
Limnoria
A robust, full-featured, and user/programmer-friendly Python IRC bot, with many existing plugins. Successor of the well-known Supybot.
Stars: ✭ 578 (+914.04%)
Mutual labels:  irc, irc-bot
phenny
My fork of phenny lives on at https://github.com/vtluug/phenny. This tree is now unmaintained.
Stars: ✭ 15 (-73.68%)
Mutual labels:  irc, irc-bot
teleirc
Go implementation of a Telegram <=> IRC bridge for use with any IRC channel and Telegram group
Stars: ✭ 112 (+96.49%)
Mutual labels:  irc, irc-bot
eggdrop-docker
No description or website provided.
Stars: ✭ 20 (-64.91%)
Mutual labels:  irc, irc-bot
energymech
EnergyMech IRC Bot
Stars: ✭ 24 (-57.89%)
Mutual labels:  irc, irc-bot
yesbot
IRC Bot Written in Prolog
Stars: ✭ 19 (-66.67%)
Mutual labels:  irc, irc-bot
CloudBot
CloudBot - The simple, fast, expandable, open-source Python IRC Bot!
Stars: ✭ 57 (+0%)
Mutual labels:  irc, irc-bot
CloudBot
CloudBot - The simple, fast, expandable, open-source Python IRC Bot!
Stars: ✭ 69 (+21.05%)
Mutual labels:  irc, irc-bot
insobot
C99 modular IRC bot with markov chains
Stars: ✭ 71 (+24.56%)
Mutual labels:  irc, irc-bot
Cardinal
A Python IRC bot, designed to make adding functionality quick and simple.
Stars: ✭ 92 (+61.4%)
Mutual labels:  irc, irc-bot
Object-Detection-using-LiDAR
This repo detect objects automatically for LiDAR data
Stars: ✭ 38 (-33.33%)
Mutual labels:  tkinter
irc-docs
Collected IRC protocol documentation
Stars: ✭ 47 (-17.54%)
Mutual labels:  irc

⚠️ moved to github.com/pyhoneybot/honeybot ⚠️

first-timers-only Open Source Love Open Source Love MadeinMoris

🍯 honeybot py

📮 About

HoneyBot is a python-based IRC bot. (python3)

Feel free to contribute to the project!

alt text

🕹 Project Motivation

Implementing the project in Java was weird, py's connect was sleek. Thus, the project stack was shifted over to Python. If you can think of any features, plugins, or functionality you wish to see in the project. Feel free to add it yourself, or create an issue detailing your ideas. We highly recommend you attempt to implement it yourself first and ask for help in our discord server!

Psst. since i learnt py through this bot, we decided to keep a new-comers friendly policy. Feeling lost? Just ping.

📌 Contributing Countries

🇲🇺 🇺🇸 🇨🇦 🇦🇷 🇮🇳 🇬🇧 🇬🇬 🇧🇷 🇸🇽

📨 Follow the project on CodeTriage for updates!

get issues delivered in your inbox.

Open Source Helpers

Discord

https://discord.gg/E6zD4XT

💭 Project Testimonials

@TannerFry

With experience in programming in Python, and implementing an SMTP email plugin for a different system, picking up HoneyBot and following the documentation provided for new-comers made it very simple to implement the same SMTP email plugin to the HoneyBot system. This was my first time contributing to an open-source project on GitHub and it was an overall great experience. The welcoming of new contributors and documentation on how to contribute and implement plugins is great for people who have never contributed to a project before, and Abdur-Rahmaan Janhangeer was extremely helpful when answering my questions and helping me along the way.

@RiceAbove

HoneyBot is my first time collaborating to an open source project and I'm loving it. Before discovering HoneyBot, I was very intimidated on the idea of working with other people and had no idea what an IRC even was. Now I realize how much fun and rewarding it is to work together on a project with dedicated and friendly individuals. The documentation is easy to follow and everyone is super helpful. I highly recommend any new programmer who want to contribute on an open source project to try out HoneyBot. Personally I enjoy working on this project more than my own schoolwork.

@justinwalker4179

HoneyBot is my first open source project and I had never worked with an IRC before. For school I was required to contribute to projects, but it was always so intimidating to me. I had always heard it gets easier once you've gotten over the fear wall, and that's what HoneyBot did for me. Excellent readme and quick feedback allowed me to make my first plugin. Now I've made many contributions, and look forward to any new issues I can get my hands on. Abdur-Rahmaan Janhangeer has been extremely helpful and I owe him and this project a lot for getting me into the open source world.

@mboekhold

HoneyBot is a very friendly and welcoming community. They provided quick feedback and I would defenitely recommend this project to newcomers to give them that first boost on contributing to open source. HoneyBot helps you all the way there to issuing your first PR, step by step. I contributed a comic plugin, and I was thankful for meeting all the friendly and passionate people who are active in this community.

Current Features

  • 🍬 OOP architecture
  • 🛰️ keyword parameters
  • 🌵 password security with config file [disabled for now]
  • 🔌 now with plugins

Current Plugins

🔧 Plugins Development

including it here. let's begin

a plugin has the following structure:

# -*- coding: utf-8 -*-
"""
[greet.py]
Greet Plugin
[Author]
Abdur-Rahmaan Janhangeer, pythonmembers.club
[About]
responds to .hi, demo of a basic plugin
[Commands]
>>> .hi
returns hoo
"""


class Plugin:
    def __init__(self):
        pass

    def run(self, incoming, methods, info, bot_info):
        try:
            if info['command'] == 'PRIVMSG' and info['args'][1] == '.hi':
                methods['send'](info['address'], 'hooo')
        except Exception as e:
            print('woops plugin error ', e)

we see three parameters being passed to the run method , incoming, methods, info)

parameter1: incoming

incoming is the raw line and is not used except if you are not satisfied with the already provided methods

parameter2: methods

methods is a dictionary of methods to ease your life. a quick look at main.py reveals

def methods(self):
        return {
                'send_raw': self.send,
                'send': self.send_target,
                'join': self.join
                }

where send_raw allows you to send in any string you want, thereby allowing you to implement any irc protocol from scratch

but, for most uses, send allows you to send a message to an address methods['send']('<address>', '<message>'). using it in conjunction with info parameter allows you to send messages where it came from, in pm to the bot or in a channel. you can however hardcode the address.

join allows you to join a channel by methods['join']('<channel name>')

parameter3: info

for a normal run, info produces

{
'prefix': 'appinv!c5e342c5@gateway/web/cgi-irc/kiwiirc.com/ip.200.200.22.200',
'command': 'PRIVMSG',
'address': '##bottestingmu',
'args': ['##bottestingmu', 'ef']
}

hence if you want messages, messages = info['args'][1:] or the first word if you want to check for command will be info['args'][1]

wrapping up

hence

if info['command'] == 'PRIVMSG' and info['args'][1] == '.hi':
    methods['send'](info['address'], 'hooo')

from above means

if message received == .hi:
    send(address, message)

📃 Contributing Guide

  • don't forget to add your country flag here after accepted PR. i'll have to hunt it down on your profile if not.
  • make sure to follow PEP8

about PR

different changes to different files. for example, someone making a weather plugin first he creates a new branch

git checkout -b "weather-plugin"

then he commits

git add *
git commit -m "added weather plugin"

then he push to create a PR with the branch

git push origin head

now let us say he wants to work on another issue, adding a joke in the jokes plugin, he creates another branch

git checkout -b "add-jokes"

after, same as before

git add *
git commit -m "added some jokes"
git push origin head

now he wants to fix his weather plugin, he changes branch

git checkout weather-plugin

works, then commit

git add *
git commit -m "fixed <issue>"

then a PR

git push origin head

Why all these?

So as not to reject a whole PR just because of some oddities. Reject only unneeded part.

🥄 Updating fork

Now, other changes are ongoing, what if you need the latest changes?

git pull origin master

helps if you cloned your own repo. What is you want to update your local copy of someone else repo? you do it like that

cd <your/local/cloned/repo/path/here>
git remote add upstream git://github.com/Abdur-rahmaanJ/honeybot.git
git fetch upstream
git pull upstream master

Quickstart

⚠️ moved to github.com/pyhoneybot/honeybot ⚠️

  • specify your details in CONNECT.conf (already included)
[INFO]

server_url = chat.freenode.net
port = 6667
name = appinventormuBot
  • run main.py

🔌 Todo Plugins

  • 💐 humour
  • 🌨️ weather
  • ✉️ mail
  • 🎛️ maths
  • 📥 pm when user online

Allowing Plugins

in PLUGINS.conf, add the plugin to allow on a new line !

calc
username

📧 Contact

Email

🖊 Credits

@arwinneil for opensource and madeinmoris badges

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].