Akasaka's Longpoll Server
A longpoll server for the VK.com social network.
Makes it possible for you to have extensive functionality on your chat bot without having to mess with lots of scripts, using a simplified plugin system. Currently only message events are supported
- VK_API module
- Tested on Linux only
aklpplugin folder the following plugins are included:
filesvr— FTP-alike file server for AKLP. Command: see README! requires configuration
passing— monitor who's online with a command. Command: !passing requires configuration
rndphoto— get a random photo from an album. Command: !photo requires configuration
testplugin— a sample plugin. Command: !context, !reverse [text], !ping, !say [text] !say command requires flite
ai— an AIML chat bot, too poorly documented...
Config is located at the top of the
SECRET: specify what VK App ID and App Secret Token you've created for your passive system.
PASW: specify login and password for your passive system's account
BAN: array of user IDs of people whose messages will be ignored
PLUGINDIR: an array of folders where to look for plugins. Example:
MSGPREFIX: a prefix that identifies the message as a command
SYCOMMPFX: a prefix that identifies the message as a system-value command (higher priority than contexts and plugins).
SYSOPID: a number designating the VK ID of the SysOp. Required for proper operation of secure plugins such as the filesvr plugin. Improper configuration may lead to security flaws.
FORKOFF: detach process from terminal into background after start. If the process is detached, the only way to stop it is
killall aklongpoll.pyor reboot.
CRASHY: when True, doesn't wrap plugins into a try-catch block and lets them crash either their thread (see below) or the whole server process. Useful when debugging your plugins.
THREADED: when True, puts each plugin query into its own thread. Useful for using plugins with long operations to keep the system responsive for other users.
UNHANDLED: Notify the user when their command was prefixed correctly, yet unrecognised.
UNPREFIXED: Notify the users who didn't prefix their command or sent a plain message that this is a passive system and not a real person.
UNPEXCEPT: Array of numbers of VK IDs of people, who should not be notified with the above setting.
UNPFORWARD: Forward unprefixed/plain messages to the SysOp.
UNPBAN: Array of VK IDs of people whose unprefixed/plain messages will be completely ignored.
UNPNOTICE: A message which will be sent to people when
UNHANDLEDis set to True.
- Download the server
- Put it into desired folder
- Configure according to the description above
- Configure plugins that need configuration, such as filesvr.
- optional: put into cron for
@rebootor whatever means of auto-restart
To send a command, start the message with the configured prefix. For example if you set the prefix to be
#, you will need to send
#mycommand. All plugins then get a command of
mycommand and if any one supports it, then it will be handled. For example:
You: #hello Server (plugin speaking): Hey there, sysop! You: #goodbye Server (engine speaking, if UNHANDLED is set to True): No plugin knows the command 'goodbye'. You: #donothing Server (plugin speaking): Hey, look, I'm doing nothing!
If a plugin gets you in a context, you don't have to prefix your commands. For example:
You: #!parrot Server (plugin speaking): You are now in a context that says everything back to you. You: Hey there! Server (plugin speaking): Hey there! You: Cool huh Server (plugin speaking): Cool huh You: #!parrot Server (plugin speaking): You have left the context now. You: Cool huh Server (engine speaking, if UNPREFIXED is set to True): This is a passive system, you have to prefix you commands with #.
The system-value commands execute even when the user is in context, and are only available to the sysop. The default
SYCOMMOPFX for them is
%. So executing a system level command when all the prefixes are default looks like this:
Currently supported commands:
send <userID> <message>— send a message to user with the specified numeric ID. Example:
#%send 1 Hello, Pavel!
post <text>— create a wall post with a specified text. Example:
#%post This is a wall post. Some important content goes here.
repost <oid> [comment]— create a wall post with the specified object. Example:
#%repost wall174350119_6010 LOL!
status <text>— set passive system's status. Example:
#%status Один раз оэлютс — всегда оэлютс!
sysinfo— get system status (thermal and disk state). Currently uses
hddtemp /dev/sdafor thermal info. So, works only with the server running as root.
This comes AS IS and might not suit your needs, I'm not responsible if this doesn't work as you expected or even explodes your computer. It should work fine but still be considered beta-software. Be a nice person and don't steal others' work, too.