Skip to content
This repository has been archived by the owner on Jan 23, 2021. It is now read-only.
/ Avalon Public archive

🤖 A scalable multi-function group robot for QQ and Discord. 多功能、可扩展的群机器人,支持QQ和Discord。

License

Notifications You must be signed in to change notification settings

Ray-Eldath/Avalon

Repository files navigation

Avalon v1.3.1 GNU Affero General Public License, version 3 GitHub stars GitHub followers

Build Status Build status CircleCI Known Vulnerabilities

中文(简体)

Avalon is a scalable multi-function group robot for QQ and Discord.

The support for QQ is based on CoolQ-HTTP-API, and the support for Discord is based on JDA. The connection with Microsoft XiaoIce is based on Mojo-Weixin (may not works except in China).

Functions

Note: Because Avalon is designed for QQ (an IM most of which users are Chinese) initially, and therefore some commands and functions are only available in nations and areas using Chinese.

Introduction

  • Natural language question answering: Avalon has been docked to Wolfram Alpha in order to provide natural language question answering service. You could use it by command avalon tell me.
  • Message record and quote: If configured correctly, Avalon will record every message in group(s) into a database. You can also quote message into database annually by command avalon quote.
  • Build status notification: When the build status for specified project(s) update, Avalon will send notification. (AppVeyor and TravisCI supported.)
  • Execute code online: Avalon allows you to execute a piece of code by command avalon execute. 35+ programming languages supported, include Java, Rust, Ruby, JavaScript, Kotlin, C++, and so on. (served by glot.io)
  • Notification sent when RSS update: After enable RSS function and specified the URL(s), Avalon will send notification when these RSS update.
  • Scalable: Avalon allows you to add new function or feature by MessageHook or Plugin.
  • (Unavailable except in Chinese nations or areas) Smart reply: Avalon has been docked to Microsoft XiaoIce to privide smart reply service (just like chat bot), you could use it by command avalon answer me.
  • Unavailable except in Chinese nations or areas) Hitokoto: Avalon has been docked to 一言 to provide "hitokoto". You could config Avalon to send one when started or use command avalon hitokoto to get one.
  • ...

List of commands

All commands listed below can be triggered by some particular command as long as has required permission.

❕: Admin command. Only users specficed as admin in group.json and owner could execute these commands.

❗: Owner command. Only user specified as owner in group.json could execute these commands.

⚪: Unmanagerable command. These command can not be managed by avalon manager, but can be disabled in config.json.

🔴: Basic command. These command can neither be managed by avalon manager nor disabled in config.json.

Name Trigger command Description
Blacklist avalon blacklist (list OR add OR remove) ⚪ ❕ List all accounts in blacklist. Add account to blacklist or remove from it.
Echo avalon (ec OR echo) Avalon will repeat the given sentence.
Execute avalon (ex OR execute) <LANGUAGE>{ENTER}<CODE> Execute given code and echo the return or the error message.
ExecuteInfo avalon (exi OR execute info) For info about code executor.
Flush avalon flush ⚪ ❕ Flush caches and delete temp files.
Heartbeat avalon (hb OR heartbeat) ⚪ Test if Avalon still alives.
Help avalon (hp OR help) 🔴 For help content.
Manager avalon manager (start OR stop) <TRIGGER COMMAND> ⚪ ❕ To start or stop particular command responder.
Quote avalon quote <SPEAKER> <CONTENT> ❕ To quote message into Avalon's database.
Reboot avalon reboot ⚪ ❗ Reboot Avalon.
ShowAdmin avalon (wia OR whoisadmin) Show list of all admins.
Shutdown avalon (shutdown OR exit) ⚪ ❗ Shutdown Avalon.
Version avalon (ver OR about) 🔴 Show version and related info.
Wolfram avalon (tm OR tell me) <your question> (Only English) Send your question to Wolfram Alpha and echo the return.

Some commands only available in particular version of Avalon. For more details, see RELEASE Notes for every RELEASE.

List of extension

All following extension are push-type, they will sent message automatically when state change detected and therefore can not be triggered by command statements.

Name Description
BuildStatus Notification will be sent when configured CI build state of given project update. TravisCI and AppVeyor now supported.
RSSFeeder Message will sent when configured for RSS update.

If you want Avalon to have some new functions, welcome new issue.

Commands and extensions not work except in Chinese nations or areas may not listed. For info about these commands and extensions, see Chinese (Simplified) version of README file.

Coversation log

// TODO

Contribute Open Source Helpers

Notice

  1. Please make sure your editor support EditorConfig!
  2. All class under package group must implements GroupMessageResponder.
  3. Class or method that tagged as @deprecated will removed officially in the next release.
  4. From v0.0.1, the version number will follow Semantic Versioning 2.0.0.

Todo

See Projects / Avalon.

Configuration

See Avalon.wiki. (Only Chinese (Simplified) version provided yet ;-) )

Acknowledgement

This project is developed with IntelliJ IDEA Ultimate and the subscription is obtained freely from Jetbrains Open Source Support Program. Thanks to Jetbrains!

Jetbrains logo