/Aiess

A web scraper and discord bot for osu! mapping/modding related event feeds.

Primary LanguagePython

Aiess

tests codecov CodeFactor Discord

Aiess gathers mapping-related events in osu! (e.g. ranks, qualifications, nominations, suggestions, newsposts, group changes, etc), and provides the ability to subscribe to these events through a Discord bot.

Discord Bot (./bot) | Invite

Written in Python using Pycord.

Example Commands

  • /subscribe <filter> Subscribes this channel to events matching <filter>
    • e.g. /subscribe type:ranked

  • /recent [filter] Returns the most recent event gathered, optionally matching [filter]
    • e.g. /recent type:ranked and creator:vinxis

Filtering

Supports

  • logical operators (and/or/not case insensitive).
  • parentheses (e.g. type:(nominate or qualify)).
  • aliases for types and groups (e.g. type:nomination-reset = type:reset).
  • quoting to escape spaces (e.g. user:"name with spaces").
  • basic wildcards (e.g. content:%needle% for any event with "needle" in its text).

Here's a few useful filters:

  • #mapfeed type:(nom or qual or dq or pop or rank or love) and not user:banchobot
  • #mapfeed-osu type:(nom or qual or dq or pop or rank or love) and not user:banchobot and mode:osu
  • #groupfeed type:(add or remove)
  • #groupfeed-bns group:bns
  • #newsfeed type:news
  • #newsfeed-fa type:news and news-title:"%featured artist%"

Permissions

Commands can be disabled in Server Settings > Integrations > Aiess. By default:

  • /subscribe and /unsubscribe requires the Manage Channel permission.

  • /info, /ping, etc. are public, but only visible to the caller.

  • /recent is public.

Event Gatherer (./scraper)

Gathers event data from osu!apiv2 and the osu! website into a MySQL database.

Rate Limits

Request Rate Limit
Page 1 / 60 seconds
API 1 / 1 second

Scraping

Route(s) Event type(s) yielded
/beatmapsets/events Nominated, Qualified, Nomination Reset, Disqualified, Ranked, Loved, Unloved, Resolved, Reopened, Kudosu Given, Kudosu Removed, Kudosu Allowed, Kudosu Denied, Genre Edit, Language Edit
/beatmapsets/discussions Suggestion, Problem, Note, Praise, Hype
/beatmapsets/discussions/posts Reply
/home/news News
/groups/28 (full bns), /groups/32 (probation bns), /groups/7 (nat), /groups/4 (gmt), /groups/16 (alumni), /groups/11 (devs), /groups/22 (support), /groups/31 (project loved) Added, Removed

BN Website Interface (./bnsite) | bn.mappersguild.com

Handles activity, performance, and application evaluations of Beatmap Nominators.

Events Types
Forwarded Nominated, Qualified, Nomination Reset, Disqualified, Ranked
Retrieved Added, Removed

BN Planner Interface (./bnplanner)

Handles planning of nominations for Beatmap Nominators in osu!catch.

Events Types
Forwarded Nominated, Qualified, Nomination Reset, Disqualified, Ranked, Add, Remove