Files
discord-analyst/src/main.py
T
2021-06-04 15:36:24 +02:00

157 lines
4.1 KiB
Python

import sys
from miniscord import Bot
import logging
if sys.version_info < (3, 7):
print("Please upgrade your Python version to 3.7.0 or higher")
sys.exit(1)
from utils import emojis, gdpr, command_cache
import scanners
from logs import GuildLogs
logging.basicConfig(
format="[%(asctime)s][%(levelname)s][%(module)s] %(message)s", level=logging.INFO
)
emojis.load_emojis()
bot = Bot(
"Discord Analyst",
"1.15.3",
alias="%",
)
bot.log_calls = True
async def on_ready():
GuildLogs.check_logs(bot.client.guilds)
return True
async def on_guild_remove():
GuildLogs.check_logs(bot.client.guilds)
return True
bot.register_event(on_ready)
bot.register_event(on_guild_remove)
bot.register_command(
"(cancel|stop)",
GuildLogs.cancel,
"cancel: stop current analysis (not launched with fast)",
"```\n%cancel: Stop current analysis (not launched with fast)\n```",
)
bot.register_command(
"gdpr",
gdpr.process,
"gdpr: displays GDPR information",
gdpr.HELP,
)
bot.register_command(
"words",
lambda *args: scanners.WordsScanner().compute(*args),
"words: (BETA) rank words by their usage",
scanners.WordsScanner.help(),
)
bot.register_command(
"repeat",
command_cache.repeat,
"repeat: repeat last analysis (adding supplied arguments)",
"```\n%repeat: repeat last analysis (adding supplied arguments)\n```",
)
bot.register_command(
"mobile",
lambda *args: command_cache.repeat(*args, add_args=["mobile"]),
"mobile: fix @invalid-user for last command but mentions users",
"```\n%mobile: fix @invalid-user for last command but mentions users\n```",
)
bot.register_command(
"find",
lambda *args: scanners.FindScanner().compute(*args),
"find: find specific words or phrases",
scanners.FindScanner.help(),
)
bot.register_command(
"last",
lambda *args: scanners.LastScanner().compute(*args),
"last: read last message",
scanners.LastScanner.help(),
)
bot.register_command(
"(rand(om)?|mood)",
lambda *args: scanners.RandomScanner().compute(*args),
"rand: read a random message",
scanners.RandomScanner.help(),
)
bot.register_command(
"first",
lambda *args: scanners.FirstScanner().compute(*args),
"first: read first message",
scanners.FirstScanner.help(),
)
bot.register_command(
"mentioned",
lambda *args: scanners.MentionedScanner().compute(*args),
"mentioned: rank specific user mentions by their usage",
scanners.MentionedScanner.help(),
)
bot.register_command(
"(mentions?)",
lambda *args: scanners.MentionsScanner().compute(*args),
"mentions: rank mentions by their usage",
scanners.MentionsScanner.help(),
)
bot.register_command(
"(emojis?|emotes?)",
lambda *args: scanners.EmojisScanner().compute(*args),
"emojis: rank emojis by their usage",
scanners.EmojisScanner.help(),
)
bot.register_command(
"(react(ions?)?)",
lambda *args: scanners.ReactionsScanner().compute(*args),
"react: rank users by their reactions",
scanners.ReactionsScanner.help(),
)
bot.register_command(
"(channels?|chan)",
lambda *args: scanners.ChannelsScanner().compute(*args),
"chan: rank channels by their messages",
scanners.ChannelsScanner.help(),
)
bot.register_command(
"(messages?|msg)",
lambda *args: scanners.MessagesScanner().compute(*args),
"msg: rank users by their messages",
scanners.MessagesScanner.help(),
)
bot.register_command(
"pres(ence)?",
lambda *args: scanners.PresenceScanner().compute(*args),
"pres: presence analysis",
scanners.PresenceScanner.help(),
)
bot.register_command(
"compo(sition)?",
lambda *args: scanners.CompositionScanner().compute(*args),
"compo: composition analysis",
scanners.CompositionScanner.help(),
)
bot.register_command(
"freq(ency)?",
lambda *args: scanners.FrequencyScanner().compute(*args),
"freq: frequency analysis",
scanners.FrequencyScanner.help(),
)
bot.register_command(
"(full|scan)",
lambda *args: scanners.FullScanner().compute(*args),
"scan: full analysis",
scanners.FullScanner.help(),
)
bot.start()