Giter Club home page Giter Club logo

jenni's Introduction

jenni

jenni is a python IRC bot. This project is closed. Please do not expect any bugs or features to be fixed. Try Sopel instead, https://sopel.chat/

Installation & Configuration

jenni requires python 2.7, jenni will not work with python 3.x.

  1. Run ./jenni - this creates a default config file
  2. Edit ~/.jenni/default.py
  3. Run ./jenni - this now runs jenni with your settings

Enjoy!

Optional Dependencies

From Pip:

  • feedparser - allows the optional rss.py and nws.py modules to work.
  • BeautifulSoup - allows better output from DuckDuckGo in search.py, image_me module and animate_me_module to work, and allow more in-depth results for .calc
  • yelpapi - allows you to use the food module

Google Developer API Key

The YouTube module requires that you have a Google Developer API key in order to function. This key can be obtained by:

  1. Go to the Google Developer Console at: https://console.developers.google.com/
  2. Create or select a project.
  3. In the sidebar on the left, expand APIs & auth. Next, click APIs. In the list of APIs, find and ensure that the YouTube Data API is enabled.
  4. In the sidebar on the left, select Credentials.
  5. Create a new Public API access key and choose Server Key. Copy the created API Key into the google_dev_apikey option in your config.

Best Practices

  • Don't use jenni, use Sopel, https://sopel.chat/
  • Give jenni '@' (ops) at your risk. This software is provided without warranty, without exception.
  • You can no longer run jenni as the root user (euid = 0).
    • This is a huge security risk, amplifying the impact of any potential vulnerability.

Additional Info

See https://github.com/myano/jenni/wiki for information about jenni/Phenny modules

Credits

For a list of contributions to the jenni fork see the file CREDITS.

Sean B. Palmer, http://inamidst.com/sbp/ forked by yano, https://yanovich.net/

jenni's People

Contributors

0x705h avatar abjonnes avatar afuhrtrumpet avatar auscompgeek avatar bsilvereaglexx avatar dwfreed avatar egladman avatar freeboson avatar j3rn avatar jarada avatar jfriedly avatar kaneda avatar kays avatar keeakita avatar magiccc avatar meinwald avatar missionsix avatar myano avatar neomahler avatar nivex avatar nothing4you avatar paulschellin avatar philphilphil avatar qtlunya avatar quackenbushdev avatar realkindone avatar sckasturi avatar silasb avatar solidgoldbomb avatar vista- avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

jenni's Issues

Priority syntax error in xkcd.py

In line 28 of modules/xkcd.py there's this:

xkcd.priority = low

It should be replaced with this, as it fails to load without low being a string:

xkcd.priority = 'low'

I'd submit a pull request, but I can't at the moment.

unicode quit crash

jenni will crash under a certain unicode character.

mIRC 6.35/UPP default quit message has the specific character.

unobot isn't saving progress correctly

At the end of a loss the unobot module isn't correctly increasing the appropriate numbers in the unoscores file and for a win for at least one user it wasn't increasing the appropriate numbers either.

CTCP VERSION and others

Add the ability for jenni to respond to CTCP requests, such as CTCP VERSION and/or others.

SASL

Add the ability for jenni to optionally connect using SASL.

Anti-Bot-Collision.

Lets say we have two jenni's in a channel.

Someone posts "http://www.google.com" in a channel. jenni1 will say " [ Google ] - http://www.google.com ".

jenni2 will catch what jenni1 said, and repeat it. This will lead to an infinite url linking loop.

I suggest making it so this only happens once or twice, then the other jenni is ignored.

Multi-network support.

Currently jenni can only connect to one network.

I am suggesting adding multi-network support.

UNO request cmd

Better set another command to auto stop the game if not active for 1min to 5mins

What if the starter has gone? What can we do?

Save individual user zip codes

Idea is for users to have jenni store user zip codes.
Example:

KindOne: .set weather 31216

// so that later on, when i do

KindOne: .weather

// I get

jenni: Clear ☼, 50.0℉ (10℃), 30.00in (1013mb), Calm 0kt (↑) - KMCN 08:53Z

//Without having to specify my zipcode.

.startrss returns ProgrammingError

When I use .startrss jenni prints the last rss item, and a couple of seconds later returns:

ProgrammingError: Cannot operate on a closed cursor. (file "/home/user/.jenni/modules/rss.py", line 133, in read_feeds)

cmode +c -- blocks color/bold/ect.. text on certain IRCd's.

UnrealIRCd / bahamut (dalnet) have cmode +c .. this mode will HALT all color/bold/ect.. text. basically causing jenni to fail.
charybdis / ircd-seven (freenode) cmode +c is forgiving as it just strips the color/bold/ect... as it send it to the channel.

Idea is to make jenni grab the cmode's when it joins the channel or when they change. if cmode +c exists, make jenni NOT send color/bold text. This will prevent jenni from failing on UnrealIRCd / bahamut.

On a side note, UnrealIRCd's cmode +c will let bold text go through. Just not color.

Logging Channel

Would be nice to have jenni to privmsg a channel whenever someone uses a command.

Ignore certain URL's.

The idea behind this is to prevent jenni from spamming the title of specific URLs.

No, this is not for "Rick-rolling", that's just an added benefit. ;)

On the fly aliases

Create the ability for admins to create aliases for existing functions / commands without restarting jenni.

RSS - one URL for all channels.

Currently, jenni pulls the RSS feed in a per channel setting.

If 20 channels pull from the same URL for a RSS, jenni basically checks a RSS 20 times. This is horrible as the website could think jenni is some bot and block the IP.

I am suggesting make jenni store the URL globally (or something like that?), pull whatever feed, then message all the channel that have that specific URL in their settings.

If its multiple channels, do a ' PRIVMSG ##kindone,#jenni,#defocus : News feed here.. ' instead of sending a single PRIVMSG per channel. Possibly grab the maximum amount of channels per PRIVMSG in the RAW 005 on connection.

Modules needing reloaded after launch

admin.py and unobot.py both need reloaded after starting jenni before they work. I haven't really investigated as to why this is occurring but it's rather annoying.

Log Handling

Create a logs/ directory that contains a few files. Module error logs, connection logs, and raw logs of everything.

SSL

Add the ability for specify if jenni should use SSL when connecting to an IRC server.

add man help lookup

add ability to pull up command descriptions and possibly a link to more documentation with a .man command.

LaTeX module

update it to detect inline LaTeX

possibly look for a place that doesn't default to $maths$ for rendering LaTeX

Hide .stats for specific channels.

The .stats command shows nicks/channels.
Lets say I have a private channel, like ##kindone-spam. if someone in ##kindone does ".stats", they would then see the stats for ##kindone-spam.

I am suggesting making an option to hide specific channels.

Jenni doesn't respond to certain commands?

Since I am a new user this might be a stupid issue, but still - I have my nickname set up as an admin of a jenni bot, admin module seems to be up and running, but some commands are not available (for example .op doesn't work, .part works, but .join doesn't etc.). Am I doing something wrong?

Rate limit globally

Provide a way to rate limit all module function calls. Also have it so that each function in a module could be rate limited by a different amount. For example:

def mytestfunc(jenni, input):
jenni.reply("I love you")
mytestfunc.commands = ['love']
mytestfunc.rate = 5

where it can only be used once per nick per 5 seconds.

yourbackerbar.com search

phenny should "Collect a search string and a zip from a user and yield the results from yourbackerbar.com"

find.py

When 'search.txt' is empty (but exists) it causes an EOFError.

yano - 1278709327.4

AJoseph: maybe, in the future you should resay that message but start off with "phenny should..."

Not able to connect to password protected server

I'm running ircd-hybrid 7.2.2 on a ubuntu server. The server is running on 6669 and password protected.

I've added serverpass to the default.py.

On starting jenny this is what i see

Connecting to example.com:6669... connected!
Closed!
Warning: Disconnected. Reconnecting in 20 seconds...

On the server logs I see:

[2012/1/25 12.35] Access denied: hal9k[A.B.C.D]
[2012/1/25 12.35] Unauthorized client connection from hal9k[[email protected]] on [0.0.0.0/6669]

I'm reasonably comfortable with python so I added some print debugging to modules/startup.py, but it seems the server throws me out before that.

eggdrop works out of the box :(

View all .scores for a person

Idea is for someone to be able to view his/her or other people's scores for all the #channels, in one command.

Example:

.scores KindOne all

Scores for KindOne: #jenni: 1 | #channel 44 | ##kindone 9000

voice + moderation

voice players when they join so that they are recognisable, also perhaps +mz the channel on .uno to reduce noice.

Improve logging.

Currently jenni just sticks everything into "logs/raw.log".

Possibly make jenni do "logs/$network/$channel-MM-DD-YYYY.log".

Possibly make this configurable from inside the config?

Dynamic channel access.

This would allow users to have access to certain parts of jenni per channel.

Example:

'john' can make jenni join/part his #foobar channel, while not being able to use the command for someone else's channel.

personal stats

add something like .mystat to get your personal stats.

DCC Chat Support

This can be used to view block list without spamming channels.
This can also prevent the bot from flooding out due to posting multiple lines.

connection issue

Connecting to chat.us.freenode.net:6667... connected!
error: uncaptured python exception, closing channel <bot.Jenni connected at 0x7f99c4e4c3f8> (<class 'socket.error'>:[Errno 111] Connection refused [/usr/lib/python2.6/asynchat.py|handle_read|110] [/usr/lib/python2.6/asyncore.py|recv|373])
Closed!
Warning: Disconnected. Reconnecting in 20 seconds...

Define Port Number

Add ability to specify which port number of the IRC server jenni uses upon connecting.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.