titegtnodi / bennubot Goto Github PK
View Code? Open in Web Editor NEWAn open-source, multi-protocol, multi-server, cross-platform, python bot run mainly off of plugins.
An open-source, multi-protocol, multi-server, cross-platform, python bot run mainly off of plugins.
This is kind of a feature request, and kind of a minor issue. It doesn't currently cause any issues but right now if BennuBot is kicked, or simply cannot join a channel (for whatever reason), the channel remains in current channel list for the IRC server. It should be removed.
XMPP needs to be more stabilized. I think the keep-alive is fine, there just needs to be a check to ensure the connection is actually alive and if not, reestablish.
Technically XMPP should be handling that so it's almost an xmpp.py issue. This could still be accounted for and handled in global.py because it only errors because it uses "xmpp_roster[ii].getItems()".
This issue is related to #6.
I'm not sure why it happens. Maybe the roster sometimes sees a user twice? If so, that could easily be fixed within' global.py. I'm wondering if it shows a user twice if they're connected via 2 devices, not sure yet.
Right now when BennuBot receives a message from a channel it doesn't think it's in, it doesn't think anything of it. It handles the message normally, and maybe even replies to the channel. BennuBot should record the new channel and register it as a channel it's joined to.
This is related to issue #5.
Coroutine support requires Python 3.4+ support. This will likely deprecate almost everything. Considering every up-to-date mainstream Linux distro seems to have a Python 3.4 package, this shouldn't be too big of an issue. I have no interest in supporting Python 2.7 anymore.
The protocol was made before the database existed. It hasn't been updated for the database. It shouldn't take long, it will also allow for more features (rejoin all channels on restart for example). This will also allow for commands like ";irc connect irc.freenode.net" and maybe ";irc disconnect ".
Currently most / all variables are not documented. Fixing this issue would encourage new developers and ease the startup for new users and developers.
It would be nice to be able to do ".global" to send cross-protocol/cross-server messages. Maybe options to specify protocol like ".global irc" and it will only message IRC channels BennuBot is joined to.
When plugins/say.py was written, returns with messages were not supported. Now they are, so there is no reason to use sendMSG anymore.
There should be a tutorial for newcomers. This should help at least Linux and Windows users get BennuBot up and running on their preferred IRC network, and register the user as an admin.
This should be marked as complete when the features of plugins/remote.py are documented as well.
If a nick is unicode, BennuBot handles it as "". Check if this is a Skype4Py bug, or a BennuBot issue, and proceed from there I guess.
For consistency, also, unicode is handy.
It would be nice to at least have a basic lookup for either the user's nick or accept a parameter to see the user's currently playing / last played song on LastFM.
In main.py on the line that contains:
admins = dict(admins.items() + plugAdmins.items())
Seems to imply that if a plugin is reloaded, that there will be multiple entries of the same admins. This could be remedied by removing the entry added by the protocol, (del admins['irc'] ?). I'm not sure if this even an issue but this is something that should be looked at and confirmed if it's an issue or not.
Some sort of simple database generator / editor. Maybe also make BennuBot only enter the main loop on "init", that would simplify things. This should be user-friendly enough for end-users.
BennuBot needs to expand it's horizons. This will demonstrate the cross-protocol abilities of BennuBot as well as test them in the real world.
Just a plugin to demonstrate how BennuBot could be used to actively interact with players in the game. It must support the following:
It might also be nice to see two plugins. One which just has Furcadia functions, and one that demonstrates how they could be used for a bartender.
A quick summary of the connected networks and servers would be handy.
A thread is certainly not needed for every protocol trying to send a message. To maintain a certain level of responsiveness, coroutines could be utilized (See #23). Maybe have them check the queue, and exit immediately afterwards, or check the queue before the coroutine is called, then sort+call the send functions as needed. This could be included in the new coroutine setup which will be used for plugins (and replace all threads, basically).
Make tell.py reply on UID detection, and maybe have the option to encase names in quotes or something else.
would just forward to the aliased function, nothing complicated.
If you try to join the same channel twice, BennuBot will think it's in the same channel twice. This isn't acceptable and should be fixed.
I'm making this a separate issue to encourage moving forward.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.