Discord Bot for server hosts, devs, and admins. Analyzes timings reports & uploads text files to hastebin. Developed by https://birdflop.com.

Overview

"Botflop"

Click here to invite Botflop to your server.

Current abilities

Analyze timings reports

Paste a timings report to review an in-depth description of potential optimizations. You can try it out yourself on our Discord

Timings 1 Timings 2

Hastebin upload

Botflop converts text files into bin links. You can try it out yourself on our Discord

message.txt latest.log config.yml

React

Botflop reacts to messages (requires Administrator permission) reaction

Comments
  • crash w/ binflop upload

    crash w/ binflop upload

    [20:41:43 error]: unhandledRejection: Cannot read property 'split' of null
    TypeError: Cannot read property 'split' of null
        at module.exports (/home/container/events/messageCreate.js:28:60)
        at Client.emit (node:events:394:28)
        at MessageCreateAction.handle (/home/container/node_modules/discord.js/src/client/actions/MessageCreate.js:26:14)
        at Object.module.exports [as MESSAGE_CREATE] (/home/container/node_modules/discord.js/src/client/websocket/handlers/MESSAGE_CREATE.js:4:32)
        at WebSocketManager.handlePacket (/home/container/node_modules/discord.js/src/client/websocket/WebSocketManager.js:346:31)
        at WebSocketShard.onPacket (/home/container/node_modules/discord.js/src/client/websocket/WebSocketShard.js:478:22)
        at WebSocketShard.onMessage (/home/container/node_modules/discord.js/src/client/websocket/WebSocketShard.js:317:10)
        at WebSocket.onMessage (/home/container/node_modules/ws/lib/event-target.js:199:18)
        at WebSocket.emit (node:events:394:28)
        at Receiver.receiverOnMessage (/home/container/node_modules/ws/lib/websocket.js:1169:20)
    
    opened by Pemigrade 2
  • Spark Profile Support

    Spark Profile Support

    Adds /profile command for spark links @Birdflop spark.lucko.me/blabla also works

    /profile command leads to /timings command if given link of vice versa and vice versa

    Also added a warning "Your server isn't lagging" if the average tps is 19+ which can be bypassed with a button to force show analysis

    opened by saboooor 1
  • Update timings_check.yml

    Update timings_check.yml

    Purpur dropped Airplane's patches for a reason:

    "After much internal deliberation we have come to the conclusion that it is in the best interest of Purpur and it's users that we drop Airplane's set of patches from our software.

    Airplane doesn't give us nearly as much performance as we originally thought it would as it's just a small set of micro optimizations, most of which don't really give any noticeable gains at all outside of extreme circumstances. The few features that do actually change the game have done so in unexpected and unwanted ways for the majority of our users, the most notable one being DEAR.

    Between these technical concerns, the voices of our users that have had problems or confirmed airplane hasn't helped them at all, and the negativity we continue to receive from the Airplane community and team in general, the decision to remove the patches was a rather simple one to make.

    Fear not! Purpur is still based on Tuinity where majority of the performance gains over Paper come from. And don't forget Purpur still has its own performance oriented patches on top of that for that extra zing!

    We look forward with anticipation to what the future brings us as we approach 1.17 and hope to continue giving you the best possible performance and experience running your Minecraft servers ^_^"

    opened by KolakZ 1
  • Add warning if using plugin AuctionHouse

    Add warning if using plugin AuctionHouse

    Would it be possible to add the AuctionHouse plugin to the list of bad plugins when reviewing timings? In addition to the performance problem there are other exploits that I will not explain here..

    image

    image

    image

    image

    image

    opened by SrBedrock 1
  • Cleanup code and migrate data to yml file

    Cleanup code and migrate data to yml file

    This PR cleans up the code in timings.py and migrates most of the timings checks into a yaml file. The goal is to make it easier to set up analysis for timings, while also keeping the code clean. Still have a few options to add to the yaml file, but I felt it was at a good point to PR.

    version determines what minecraft version to check to make sure the timings report is on the latest version of minecraft. servers checks what server is being used (through the server jar version) from top to bottom. In the current yml file, it checks to see if the server jar is yatopia. If the server jar is not yatopia, then it iterates and checks if the server jar is paper, etc.

    servers:
    - name: "yatopia"
      prefix: "❌ "
      value: |-
        Yatopia is prone to bugs.
        Consider using [Purpur](https://ci.pl3x.net/job/Purpur/).
    - name: "paper" # the name of the server jar
      prefix: "||❌ " # the prefix to use before the field name
      suffix: "||" # the suffix to use after the field name
      value: |- # the value which is used as the field value
        ||Purpur has more optimizations but is generally less supported. 
        Consider using [Purpur](https://ci.pl3x.net/job/Purpur/).||
    

    plugins is where all the plugin checks are stored. plugins are nested based on the server jar ( this is checked through the config file). Using expressions you can have different fields pop up depending on different values

    plugins:
      paper: # checks for the `paper.yml` config to see if the following plugins should be added
        ClearLag: # name of the plugin (used in field name) aka a dictionary
          prefix: "⚠ " # prefix to use for the field name (suffix option can be added)
          value: |- # field value 
            Plugins that claim to remove lag actually cause more lag. 
            Remove ClearLag.
        PhantomSMP: # a list of expressions
        - expressions: # inside the expressions option there are a list of expressions. Each expression is checked from top to bottom, compared using AND
          - paper["world-settings"]["default"]["phantoms-only-attack-insomniacs"] == "false" # basically an if statement in the form of a string
          prefix: "⚠ "
          value: |-
            You probably don't need PhantomSMP as Paper already has its features.
            Remove PhantomSMP.
        - expressions: # if the earlier expression fails, then the next one will be checked
          - paper["world-settings"]["default"]["phantoms-only-attack-insomniacs"] == "true"
          prefix: "⚠ "
          value: |-
            You probably don't need PhantomSMP as Paper already has its features.
            Enable phantoms-only-attack-insomniacs in [paper.yml](http://bit.ly/paperconf).
      purpur:
        SilkSpawners:
          prefix: "⚠ "
          value: |-
            You probably don't need SilkSpawners as Purpur already has its features. 
            Remove SilkSpawners.
    

    config is where all the config checks are stored. the options are nested based on what config they come from, but they don't necessarily need to be from that config. They follow the same concept and logic as the plugins option.

    config:
      server.properties: # the config file the option is based on (options don't rely on this, this is mostly just for organizational purposes)
        online-mode: # the option name
        - expressions: # inside the expressions option there are a list of expressions. Each expression is checked from top to bottom, compared using AND
          - not server_properties["online-mode"] # if online-mode in server_properties is false, AND
          - spigot["settings"]["bungeecord"] == "false" # bungeecord is false, AND
          - paper["settings"]["velocity-support"]["online-mode"] == "false" or paper["settings"]["velocity-support"]["enabled"] == "false" # velocity-support.online-mode is false OR velocity-support.enabled is false THEN
          prefix: "❌ " # use this prefix
          value: "Enable this in [server.properties](http://bit.ly/servprop) for security."  #use this value
        network-compression-threshold:
        - expressions: # if at least one of these expressions fails, try the next pair of expressions
          - int(server_properties["network-compression-threshold"]) <= 256
          - spigot["settings"]["bungeecord"] == "false"
          prefix: "❌ "
          value: "Increase this in [server.properties](http://bit.ly/servprop). Recommended: 512."
        - expressions: # if all these expressions are true
          - int(server_properties["network-compression-threshold"]) != -1
          - spigot["settings"]["bungeecord"] == "true"
          prefix: "❌ " # use this prefix
          value: "Set this to -1 in [server.properties](http://bit.ly/servprop) for a bungee server like yours." # and use this value
    
    opened by granny 1
  • Changed detection for number based issues

    Changed detection for number based issues

    used more > and < instead of set default numbers to account for people changing their configs with no clue what they're doing.

    Also added some homework for you to figure out, just search for "TODO" ;)

    Btw, i'm not a python guy so test is before pulling, I might have fucked something up!

    opened by YouHaveTrouble 1
  • Cannot analyze timings reports

    Cannot analyze timings reports

    [07:42:50 error]: unhandledRejection: TIMINGS_CHECK.servers.forEach is not a function
    TypeError: TIMINGS_CHECK.servers.forEach is not a function
        at analyzeTimings (/Users/primary/Documents/GitHub/botflop/functions/analyzeTimings.js:108:25)
        at runMicrotasks (<anonymous>)
        at processTicksAndRejections (node:internal/process/task_queues:96:5)
        at async module.exports (/Users/primary/Documents/GitHub/botflop/events/messageCreate.js:98:25)
    
    
    opened by Pemigrade 0
  • Make buttons only usable for creator

    Make buttons only usable for creator

    Currently, the pages buttons can be used by everyone, which makes it very annoying. Other people can switch pages when I'm trying to read my optimizations.

    Maybe it's a good idea to add a check if the clicker (interaction user) also placed the timings url.

    opened by stijnb1234 0
  • Revert

    Revert "add buttons for pages to make optimization 5x faster"

    Reverts Pemigrade/botflop#22

    Ignoring exception in on_message Traceback (most recent call last): File "/home/container/discord/client.py", line 343, in _run_event await coro(*args, **kwargs) File "/home/container/bot.py", line 101, in on_message await timings.analyze_timings(message) File "/home/container/cogs/timings.py", line 334, in analyze_timings view = discord.ui.View() AttributeError: module 'discord' has no attribute 'ui'

    opened by akdukaan 0
  • Change songoda description to sketchy

    Change songoda description to sketchy

    Main reason it's on the list of shame is sketchy/unethical with their paypal stuff to move to Patreon. Not that much evidence of poor development, though

    opened by Pemigrade 0
  • Ping again crashes the entire bot.

    Ping again crashes the entire bot.

    Executing /ping and then pressing the Ping Again button on the embedded messages crashes the whole bot. It just outputs an "Unknown Message" error into the console and just crashes the bot.

    [01:14:28 error]: unhandledRejection: Unknown Message
    DiscordAPIError[10008]: Unknown Message
        at SequentialHandler.runRequest (C:\Users\-\PC\Desktop\botflop-master\node_modules\@discordjs\rest\dist\lib\handlers\SequentialHandler.cjs:287:15)
        at processTicksAndRejections (node:internal/process/task_queues:96:5)
        at async SequentialHandler.queueRequest (C:\Users\-\PC\Desktop\botflop-master\node_modules\@discordjs\rest\dist\lib\handlers\SequentialHandler.cjs:99:14)
        at async REST.request (C:\Users\-\PC\Desktop\botflop-master\node_modules\@discordjs\rest\dist\lib\REST.cjs:52:22)
        at async MessageManager.edit (C:\Users\-\PC\Desktop\botflop-master\node_modules\discord.js\src\managers\MessageManager.js:166:15)
    
    opened by HeavenCrafter 0
  • Fetch is not defined

    Fetch is not defined

    Issue with the /timings command on the latest master build. Forked it, configured it, and tried running the command but just ended up with an error instead.

    All npm packages were installed, tried installing node-fetch thinking it was the issue but it doesn't seem like it.

    [01:06:32 error]: ReferenceError: fetch is not defined
        at analyzeTimings (C:\Users\-\PC\Desktop\botflop-master\functions\analyzeTimings.js:46:23)
        at Object.execute (C:\Users\-\PC\Desktop\botflop-master\commands\timings.js:16:32)
        at module.exports (C:\Users\-\PC\Desktop\botflop-master\events\interactionCreate.js:22:11)
        at processTicksAndRejections (node:internal/process/task_queues:96:5)
    
    opened by HeavenCrafter 1
  • Opt out of all commands

    Opt out of all commands

    Need to find a way to prevent user data from being tracked for discord, so if someone runs /optout or something it should add them to a list of names that botflop will ignore. Ideally reversible

    opened by Pemigrade 0
  • Add container support

    Add container support

    Don't give Xms != Xmx warning if startup flags have the following:

    -XX:+UseContainerSupport -XX:InitialRAMPercentage=[value] -XX:MaxRAMPercentage=[value]

    where [value] is the same as [value]

    opened by Pemigrade 0
Owner
Purpur
birdflop.com
Purpur
A Telegram Repo For Devs To Controll The Bots Under Maintenance.This Bot Is For Developers, If Your Bot Is Down, Use This Repo To Give Your Dear Subscribers Some Support By Providing Them Response.

Maintenance Bot A Telegram Repo For Devs To Controll The Bots Under Maintenance About This Bot This Bot Is For Developers, If Your Bot Is Down, Use Th

Vɪᴠᴇᴋ 47 Dec 29, 2022
A Telegram Repo For Devs To Controll The Bots Under Maintenance.This Bot Is For Developers, If Your Bot Is Down, Use This Repo To Give Your Dear Subscribers Some Support By Providing Them Response.

Maintenance Bot A Telegram Repo For Devs To Controll The Bots Under Maintenance About This Bot This Bot Is For Developers, If Your Bot Is Down, Use Th

Vɪᴠᴇᴋ 47 Dec 29, 2022
A discord Server Bot made with Python, This bot helps people feel better by inspiring them with motivational quotes or by responding with a great message, also the users of the server can create custom messages by telling the bot with Commands.

A discord Server Bot made with Python, This bot helps people feel better by inspiring them with motivational quotes or by responding with a great message, also the users of the server can create custom messages by telling the bot with Commands.

Aran 1 Oct 13, 2021
Discord ToolBox is a discord bot developed by DJD320 created for the purpose of having some convenient tools in the form of a single bot.

Discord ToolBox Discord ToolBox is a discord bot developed by DJD320 created for the purpose of having some convenient tools in the form of a single b

null 3 Aug 7, 2021
Use CSV files as a Nornir Inventory source with hosts, groups and defaults.

nornir_csv Use CSV files as a Nornir Inventory source with hosts, groups and defaults. This can be used as an equivalent to the Simple Inventory plugi

Matheus Augusto da Silva 2 Aug 13, 2022
Discord bot script for sending multiple media files to a discord channel according to discord limitations.

Discord Bulk Image Sending Bot Send bulk images to Discord channel. This is a bot script that will allow you to send multiple images to Discord channe

Nikola Arbov 1 Jan 13, 2022
Compares and analyzes GCP IAM roles.

gcp-iam-analyzer I wrote this to help in my day to day working in GCP. A lot of the time I am doing role comparisons to see which role has more permis

Jason Dyke 37 Dec 28, 2022
Automatically Edits Videos and Uploads to Tiktok with 1 line of code.

TiktokAutoUploader - Open to code contributions Automatically Edits Videos and Uploads to Tiktok with 1 line of code. Setup pip install -r requirement

Michael Peres 199 Dec 27, 2022
Automatically gets clips from twitch streams and uploads them to a YouTube channel.

Twitch Stream Highlights to YT Automatic Uploader (AutoBot Clipper) This script can be used to automatically extract highlights (or clips) from a twit

Teja Swaroop 57 Dec 12, 2022
A Discord Server Cloner Which Can Clone Any Discord Server In Just Few Minutes

A Discord Server Cloner Which Can Clone Any Discord Server In Just Few Minutes.

samet 4 Jul 23, 2022
Battle.net and PlayStation title watcher that reports updates via Discord.

Renovate Renovate is a Battle.net and PlayStation title watcher that reports updates via Discord. Usage Open config_example.json and provide the confi

Ethan 1 Nov 23, 2022
FUD Keylogger That Reports To Discord

This python script will capture all of the keystrokes within a given time frame and report them to a Discord Server using Webhooks. Instead of the traditional

●┼Waseem Akram••✓⁩ 16 Dec 8, 2022
Satoshi is a discord bot template in python using discord.py that allow you to track some live crypto prices with your own discord bot.

Satoshi ~ DiscordCryptoBot Satoshi is a simple python discord bot using discord.py that allow you to track your favorites cryptos prices with your own

Théo 2 Sep 15, 2022
A bot to get Statistics like the Playercount from your Minecraft-Server on your Discord-Server

Hey Thanks for reading me. Warning: My English is not the best I have programmed this bot to show me statistics about the player numbers and ping of m

spaffel 12 Sep 24, 2022
Simple, yet effective moderator bot for telegram. With reports, logs, profanity filter and more :3

?? Samurai Telegram Bot Simple, yet effective moderator bot for telegram. With reports, logs, profanity filter and more :3 Description Personal bot, m

Abraham Tugalov 106 Dec 13, 2022
A Discord BOT that uses Google Sheets for storing the roles and permissions of a discord server.

Discord Role Manager Bot Role Manager is a discord BOT that utilizes Google Sheets for the organization of a server's hierarchy and permissions. Detai

Dion Rigatos 17 Oct 13, 2022
Discord bot to monitor collection of mods on the Steam Workshop and notify on update to selected discord server via Nextcordbot API.

Steam-Workshop-Monitor Discord bot to monitor collection of mods on the Steam Workshop and notify on update to selected Discord channel via Nextcordbo

null 7 Nov 3, 2022