# vim: syntax=spec # git_dir_name returns repository name derived from remote Git repository URL Name: nadybot # git_dir_version returns version based on commit and tag history of the Git project Version: 6.2.10 # This can be useful later for adding downstream patches Release: 1%{?dist} BuildArch: noarch # Basic description of the package Summary: A chat bot for the MMORPG Anarchy Online # License. Hopefully free or at least open-source. We assume GPLv2+ here. License: GPLv3+ # Home page of the project. Can also point to the public Git repository page. URL: https://github.com/Nadybot/Nadybot # Detailed information about the source Git repository and the source commit # for the created rpm package VCS: git+git@github.com:Nadybot/Nadybot#e51584738986ddfed68c53844dde389ee797f800:packages/rpm # git_dir_pack macro places the repository content (the source files) into a tarball # and returns its filename. The tarball will be used to build the rpm. Source: Nadybot %define php_prefix %{nil} %define php_exec php %if 0%{?rhel} > 1 %define php_prefix php80- %define php_exec php80 %endif BuildRequires: %{php_prefix}php-cli >= 8.0 BuildRequires: curl BuildRequires: sed BuildRequires: %{php_prefix}php-pdo %if 0%{?suse_version} BuildRequires: %{php_prefix}php-fileinfo BuildRequires: %{php_prefix}php-mysql BuildRequires: %{php_prefix}php-ctype BuildRequires: %{php_prefix}php-pcntl BuildRequires: %{php_prefix}php-dom BuildRequires: %{php_prefix}php-sqlite BuildRequires: %{php_prefix}php-sockets BuildRequires: %{php_prefix}php-curl BuildRequires: %{php_prefix}php-openssl BuildRequires: %{php_prefix}php-phar BuildRequires: %{php_prefix}php-zip BuildRequires: %{php_prefix}php-zlib %else BuildRequires: %{php_prefix}php-mysqlnd BuildRequires: %{php_prefix}php-json BuildRequires: %{php_prefix}php-xml %endif BuildRequires: %{php_prefix}php-bcmath BuildRequires: %{php_prefix}php-mbstring %if 0%{?rhel} < 8 BuildRequires: systemd %else BuildRequires: systemd-rpm-macros %endif %if 0%{?suse_version} Requires(pre): shadow %else Requires(pre): shadow-utils %endif Requires: %{php_prefix}php-cli >= 8.0 Requires: %{php_prefix}php-pdo %if 0%{?suse_version} Requires: %{php_prefix}php-fileinfo Requires: %{php_prefix}php-mysql Requires: %{php_prefix}php-ctype Requires: %{php_prefix}php-pcntl Requires: %{php_prefix}php-dom Requires: %{php_prefix}php-sqlite Requires: %{php_prefix}php-sockets Requires: %{php_prefix}php-curl Requires: %{php_prefix}php-openssl Requires: %{php_prefix}php-zip Requires: %{php_prefix}php-zlib %else Requires: %{php_prefix}php-mysqlnd Requires: %{php_prefix}php-xml Requires: %{php_prefix}php-json Requires: %{php_prefix}php-pecl-zip %endif Requires: %{php_prefix}php-bcmath Requires: %{php_prefix}php-mbstring Requires: dialog %global debug_package %{nil} # More detailed description of the package %description This is a chat bot for the MMORPG Anarchy Online by Funcom %pre getent group nadybot >/dev/null || groupadd -r nadybot getent passwd nadybot >/dev/null || \ useradd -r -g nadybot -d /opt/nadybot -s /sbin/nologin \ -c "Unprivileged user to run nadybot" nadybot exit 0 # The following four sections already describe the rpm build process itself. # prep will extract the tarball defined as Source above and descend into it. %prep %setup -T -b 0 -q -n Nadybot curl -o composer-stable.phar https://getcomposer.org/composer-stable.phar %{php_exec} composer-stable.phar install --no-dev %{php_exec} composer-stable.phar dumpautoload --no-dev --optimize rm -f composer-stable.phar sed -i'' -e 's|\$vars\[.enable_console_client.\].*|$vars["enable_console_client"] = 0;|g' conf/config.template.php sed -i'' -e 's|\$vars\[.default_module_status.\].*|$vars["default_module_status"] = 1;|g' conf/config.template.php sed -i'' -e 's|\$vars\[.DB Name.\].*|$vars["DB Name"] = $vars["name"] . ".db";|g' conf/config.template.php sed -i'' -e 's|\$vars\[.DB Host.\].*|$vars["DB Host"] = "%{_sharedstatedir}/nadybot/db/";|g' conf/config.template.php sed -i'' -e 's|.\./extras.|"%{_sharedstatedir}/nadybot/extras/" . $vars["name"]|g' conf/config.template.php sed -i'' -e 's|\$vars\[.cachefolder.\].*|$vars["cachefolder"] = "%{_sharedstatedir}/nadybot/cache/";|g' conf/config.template.php sed -i'' -e 's|\$vars\[.htmlfolder.\].*|$vars["htmlfolder"] = "%{_sharedstatedir}/nadybot/html/" . $vars["name"] . "/";|g' conf/config.template.php sed -i'' -e 's|\$vars\[.datafolder.\].*|$vars["datafolder"] = "%{_sharedstatedir}/nadybot/data/" . $vars["name"] . "/";|g' conf/config.template.php sed -i'' -e 's|\$vars\[.logsfolder.\].*|$vars["logsfolder"] = "/var/log/nadybot";|g' conf/config.template.php sed -i'' -e 's|\$vars\[.logsfolder.\].*|$vars["logsfolder"] = "/var/log/nadybot";|g' conf/config.template.php sed -i'' -e 's|/usr/bin/env php|/usr/bin/env %{php_exec}|g' packages/nadybot.service sed -i'' -e 's|/usr/bin/env php|/usr/bin/env %{php_exec}|g' packages/nadybot@.service sed -i'' -e 's|(php |(%{php_exec} |g' packages/nadybot # This will invoke `make` command in the directory with the extracted sources. %build # This will copy the files generated by the `make` command above into # the installable rpm package. %install mkdir -p %{buildroot}%{_sysconfdir}/nadybot mkdir -p %{buildroot}%{_sharedstatedir}/nadybot mkdir -p %{buildroot}%{_sharedstatedir}/nadybot/cache mkdir -p %{buildroot}%{_sharedstatedir}/nadybot/data mkdir -p %{buildroot}%{_sharedstatedir}/nadybot/db mkdir -p %{buildroot}%{_sharedstatedir}/nadybot/extras mkdir -p %{buildroot}%{_sharedstatedir}/nadybot/html mkdir -p %{buildroot}/opt/nadybot mkdir -p %{buildroot}/opt/nadybot/res mkdir -p %{buildroot}/opt/nadybot/conf mkdir -p %{buildroot}/var/log/nadybot find src -type d -exec install -d %{buildroot}/opt/nadybot/\{\} \; find src -type f -exec install -m 644 \{\} %{buildroot}/opt/nadybot/\{\} \; find vendor -type d -exec install -d %{buildroot}/opt/nadybot/\{\} \; find vendor -type f -exec install -m 644 \{\} %{buildroot}/opt/nadybot/\{\} \; install -m 644 main.php %{buildroot}/opt/nadybot/main.php install -m 644 res/text.mdb %{buildroot}/opt/nadybot/res/text.mdb install -m 644 conf/config.template.php %{buildroot}%{_sysconfdir}/nadybot/config.php install -m 644 conf/logging.json %{buildroot}/opt/nadybot/conf/logging.json install -D -m 644 packages/nadybot.service %{buildroot}%{_unitdir}/nadybot.service install -D -m 644 packages/nadybot@.service %{buildroot}%{_unitdir}/nadybot@.service install -D -m 755 packages/nadybot %{buildroot}%{_bindir}/nadybot # This lists all the files that are included in the rpm package and that # are going to be installed into target system where the rpm is installed. %files %defattr(644,nadybot,nadybot,755) %dir %{_sysconfdir}/nadybot %config %{_sysconfdir}/nadybot/config.php %attr(755,root,root) /opt/nadybot %attr(750,-,-) %dir /var/log/nadybot %dir %{_sharedstatedir}/nadybot %dir %{_sharedstatedir}/nadybot/cache %dir %{_sharedstatedir}/nadybot/db %dir %{_sharedstatedir}/nadybot/data %dir %{_sharedstatedir}/nadybot/extras %dir %{_sharedstatedir}/nadybot/html %attr(644,root,root) %{_unitdir}/nadybot.service %attr(644,root,root) %{_unitdir}/nadybot@.service %attr(755,root,root) %{_bindir}/nadybot %post %if 0%{?rhel} < 8 /bin/systemctl --system daemon-reload &> /dev/null || : %endif %if 0%{?fedora} || 0%{?rhel} >= 8 %systemd_post nadybot.service %endif %preun %if 0%{?fedora} || 0%{?rhel} >= 8 %systemd_preun nadybot.service %endif if [ "$1" -eq 0 ]; then rm -rf "%{_sharedstatedir}"/nadybot/cache/* rm -rf "%{_sharedstatedir}"/nadybot/db/* rm -rf "%{_sharedstatedir}"/nadybot/data/* rm -rf "%{_sharedstatedir}"/nadybot/extras/* rm -rf "%{_sharedstatedir}"/nadybot/html/* rm -rf /var/log/nadybot/* fi exit 0 %postun %if 0%{?rhel} < 8 /bin/systemctl --system daemon-reload &> /dev/null || : %endif %if 0%{?fedora} || 0%{?rhel} >= 8 %systemd_postun_with_restart apache-httpd.service %endif %changelog * Sun Sep 01 2024 Nadyita 6.2.10-1 - New command "!death" to track death-counters and get some (hopefully) funny replies - Support https://ao.tinkeringidiot.com/ for Discord item links - New command "!reck" to show mob-status in The Reck - New command "!hi" to show status of Hollow Island, including which wave is currently running. We're deliberately not showing any ninja-looting related information. - Fix several PostgreSQL issues related to grouping - Some specials recharge times were off. While the calculations are probably still not 100% correct, the new formulas by Conci, Keex-1, Keltias, TinkeringIdiot, and Tradias should improve things a lot. * Wed May 08 2024 Nadyita 6.2.9-1 - Don't cache UIDs of players from other dimensions. * Wed Feb 21 2024 Nadyita 6.2.8-1 - Added 2 http-endpoints at "/livez" and "/readyz" for Kubernetes probes. - Replace "leaderecho_color" with new setting "leader_echo_format", which accepts a template-string, so you can make leaderecho look any way you want to. - Support for Highway 0.2-protocol alongside 0.1 - Add settings to globally turn off colors for org-channel, private channels, and tells, except for messages relayed into these. - The "!greeting"-system has been revamped to take a "key=value"-pair as the first greeting word. "key" can be name, main, prof, gender, breed or faction. This allows custom greetings for individual chars, players, or professions. "!greeting add prof=doc What's up doooc?" is finally possible. - The http-client will now automatically retry 429 codes (too many requests) with various delay between the intervals. - "!raid add" now allows to give more than one character name to add to the raid. - The "!raid notin"-command will now have a link next to each player's name to add them to the raid, as well as an "add all to the raid"-link. - The Discord command endpoint now also honors banned players. * Sat Dec 02 2023 Nadyita 6.2.7-1 - Added new docker-option `CONFIG_ORG_ID` to specify the org id of the `CONFIG_ORG`. This can be used to make members of the given org members of the bot, without the bot actually being in the org. - New command `!raffle add ` to add items to a running raffle (or start a new one if none is currently running). If the same item is already being raffled, the amount will be increased. - Added raffle-links to the output of `LOOT_MODULE`. All 3 links (`!loot add`, `!bid start`, and `!raffle add`) can now be disabled in settings for a more compact output. - Added option to `NANO_MODULE` to add the nano id to the output list. - Added option to choose between aoitems.com and auno.org as link for items/nanos on Discord. - `!nw hot` was interpreting every number as seconds into the future. Now you always have to give "s", or "secs" to achieve this, while a sheer number will be the level of your character and search for towers in range accordingly. - In case of the outgoing Discord-connection to send messages being interrupted, the queue was stuck forever and didn't move forward. * Sun Nov 05 2023 Nadyita 6.2.6-1 - Add new command "!lastonline " as non-org equivalent for "!lastseen" - Add new setting "orglist_pork_url" to allow downloading orglists from our reverse proxy. This solves PORK being down very often lately. - Add new settings to allow automatically sending random greetings to players joining the private channel. - Add option to set a directory for dynamic commands. These are merely text files or directories with text files. - Wishes can now have an expiration. Per wish and a global maximum. - Added S42 loot with "!42 west|north|east|boss" and "!apf 42 west|north|east|boss" - Add new command "!group" to group people into equally-sized groups. - New command "!symbbuffs " to search for symbiants buffing a given skill. - Add new setting to only give timer-based raid-points if the raid is locked. - Allow configuring the auction-message when no one bid on the item. - Add the total required nanoskill to cast all those in "!bestnanos" - New command "!implantshoppinglist" to get a list which implants and clusters to buy at which QL. - Add new option "pause" and "resume" to "!raid ticker". This allows to pause and resume the generation of time-based points. The default state can also be configured with a new setting. - Add new setting "bid_presets" to allow setting pre-defined bid-values that are being shown in the auction information window. - It's now possible to see the trickle when simultaneously increasing all attributes by a given value with "!trickle all ". - The "!count"-commands now take an optional "raid" parameter to only consider characters currently in the raid. - Adding an org to the banlist will now automatically kick any members from the bot's private channel. - "!roll" can now also roll items, not only player names. - "!cluster" now uses the same skill aliases as "!whatbuffs". - Add TOTW, IS, and TOTW-Raid symbiants to the symbiant DB. - Make all worldboss-messages customizable via templates. - Also show current nano casting time for "!nanoinit"-command. - The "!leaders"-command won't show SuperAdmins by default. A new option "leaders_include_super_admins" needs to be set for this. - The "!nw hot"-command now accepts an arbitrary duration to check into the future. - Superadmins are now a group of their own in "!admins" and "!leaders". - Increased Docker default PHP-memory from 128MB to 192MB. - The "!points add " syntax works again. - "!points spp" did not set the timer, now it does. - Fix auction links in the LOOT_MODULE. - Banlist manipulation on older bots was slow and used too much memory - Fix rare occasion of Highway-connection going stale. - Use interface instead of object, so restarting the bot throws no errors when accessing the chat queue. * Wed Aug 16 2023 Nadyita 6.2.5-1 - Worldboss-spawn messages don't spam anymore. * Sun Aug 06 2023 Nadyita 6.2.4-1 - Switch to Alpine Linux 3.18 as base for the Docker images. - Use there whereis-database for MOB_MODULE coordinates. - If the Discord bot-user doesn't have the rights to manage emojis, fail gracefully and give a meaningful error. - Add new protocol "Drill" for the Nadybot webserver. This allows exposing the webserver of the bot to an external host (".nadybotter.eu" or ".nadybotter.org"), without exposing the whole server. This also makes the bot HTTP-traffic fully encrypted with a valid certificate. - Added Highnet, a cross-bot chat-platform similar to Darknet, but with full local control. - Allow automatic untracking of characters who haven't logged in for a configurable amount of time. - Add support for continuously updated WHOIS-information via Highway, so newly created characters are not unknown and the information available faster. - Allow "!whois" on UIDs - Add new "!raidrules" command to allow having separate bot- and raid-rules. - Reconnecting from JSON-parse errors did not close the Highway-connection. * Sat May 20 2023 Nadyita 6.2.3-1 - Add new optional parameter "" to "!whois". - When creating a poll, adding "||" At the end of the options will now disallow the usage of custom options. - Support for Discord scheduled events via "!discord events" or the new "discord(*)" routing source. - The async online-checker now has a timeout of 30s after which it will consider the searched char to be offline. - Instead of , the bot now uses by default, to retrieve user and org data. This can be changed in "!config PLAYER_LOOKUP" to any URL now. - Calculation of out-of-range status fixed when restarting the bot. - Polls with numeric choices would not display at all. - When viewing a poll, it would always say that you haven't voted yet. - Fix "{c-nick}" being empty on private channel join/leave messages. - Fix package upgrades on newer Ubuntu versions wiping the bot's database. * Fri Apr 21 2023 Nadyita 6.2.2-1 - Calculation of cloak reminder was occasionally off and logged twice a minute. - Members of orgs in the orgbanlist were still receiving "!massmsg"-messages. - "!orglist" was broken and would just fill the buddylist. Fixed now. - "!system" will now show the correct Filesystem driver. - Every non-Linux OS will now default to the Blocking Filesystem driver, causing less problems and less load. * Sat Apr 15 2023 Nadyita 6.2.1-1 - Add option "discord_custom_emojis" to enable our own Discord emojis for factions and professions. Enabled by default. - Added "!jack" / "!legchopper" command to track Jack Legchopper and his clones. - Added "!orgstats" command for some statistics about your organization. - Turning on a connect event after startup will now automatically trigger it. - The hags are now "Clan Hag X" and "Omni Hag X", so the spawn messages make sense now. * Thu Apr 06 2023 Nadyita 6.2.0-1 - New option `auto_guild_name` to allow automatic update of the org name if a change is detected. - Add new command `!altsadmin` to manage the alts of someone else. Default is restricted to admin access level. - New option `raffle_allow_multi_join` to forbid joining a raffle for more than one item at the same time - also counting alts. - `aotell()` now allows messaging access levels by prepending them with a `@`. So `aotell(@mod)` as a receiver will send a message to all mods online. - Add new module `PVP_MODULE` that provides a completely different way to interact with a new Tower-API. It can be used alongside the old `TOWER_MODULE`, because all `PVP-MODULE`-commands are subcommands of `!nw`. To get a list of all hot sites, use `!nw hot`, and so on. See for details. - Add new module `MOB_MODULE` that will automatically track some heavily-farmed NPCs on RK. It gives you their current state and HP and you can even have the module send messages for spawns, kills and people starting to attack it. Curreently supported are: - Milky Way prisoners - Clan and Omni Dreadloch camps - Clan and Omni Biodome hags - Ljotur and his placeholders - Otacustes and his placeholders - Using new unfreezing method on since the old website now redirects here. - It is no longer possible to join a raffle for the same item with an alt. - `!updateorg` will now force a re-download from PORK and never use a cached JSON-file. - If an org roster update would remove over 30% of the org's members, that update is postponed until it happened 3 times in a row. - Show the GMI-Link only in the popup of the `!nano`-command * Sun Feb 12 2023 Nadyita 6.1.2-1 - Add a new field `in_game` to the item database, so items that are not in the game, available to ARK/GM only, or are generally not applicable to the results (like tower wrist items) can be excluded from the `!items`- and `!whatbuffs` search. Also add a new setting `only_items_in_game` to turn the default exclusion on/off and do not exclude these, when the search is prefixed with a `*` - Add new `!ffa`-command that announces the items after a `!flatroll` as free for all. - Support for the long-existing update_notifications feed to inform about security updates and scheduled downtimes. - Allow selecting the filesystem driver by setting `AMP_FS_DRIVER` to `\Amp\File\Driver\BlockingDriver` or any of its alternatives. - Add a new config-file options `auto_unfreeze`. If set, the bot will try to automatically unfreeze the account in case we get a frozen-message at the login. To work around a limitation of Funcom that you cannot unfreeze more than 5 accounts per IP-address within 24h, the whole process uses a special Nadybot proxy server until it succeeds. use `CONFIG_AUTO_UNFREEZE=true` to enable this feature via Docker. - Add links to a character's history to the `!whois ` output. - Add a new option `nano_add_gmi` (on by default) that will add a GMI-link to all results of the `!nano`- or `!nanoline`-commands. - Global event feed is no longer implemented as a hidden relay, but completely from scratch to allow any number of feed subscribers and doesn't require the `RELAY_MODULE` to be enabled. - When grouping the online list by player/main, show the actual unique number of main characters of all online providers in brackets. If one character is online in the private channel and the org channel, this means it won't be counted twice anymore. * Sat Jan 07 2023 Nadyita 6.1.1-1 - Add new commands `!bestnanos` and `!bestnanosfroob` to get a list of the best nanos for your current or a given profession/level. Use `!bn`/`!bnf` or `!bnl`/`!bnfl` for the long version if you are lazy. - Support multi-platform Docker images, currently arm64 and amd64 - The `!icc`-command can now also be used to say that the arbiter is currently not here, but will be here on Sunday. Use `!icc set bs next` to specify that the upcoming arbiter week will be PvP-week. - Allow to fully customize join/leave and logon/logoff messages with a little template-like language that supports `{?if:}` and `{!ifnot:}` syntax - Instead of limiting logon/logoff and join/leave messages to the first and last logon/logoff join/leave of a player, you can now define an interval in which only one of those is shown. Settings this to 5 minutes means: During a moving 5 minute interval, only display the first and last logon/logoff join/leave message. This makes it easier to suppress multiboxer spam without affecting the regular messages too much. - `!whois ` and `!checkaccess ` / `!checkaccess` now show when someone is banned. - You can now search in the banlist with `!banlist `, where `` can contain wildcards like `*`. So `!banlist nad*` will search for all player whose name starts with `nad`. - Support multi-platform docker images, starting with amd64 and arm64, so they also work on the Raspberry Pi. - Introduce nicknames. Nicknames can be set freely and will be displayed at various locations instead of the character's or the main's name (e.g. online list). There is also a new configuration knob (`!settings change routed_sender_format`) that allows displaying the nickname when displaying routed messages (e.g. from guild channel to/from private channel) - Add support for JSON and YAML configuration files - Add new `debug()`-modifier to send the internal package representation to a routing destination for debugging purposes. - Add new `!gmi`-command to check prices on GMI. Works with names, IDs and dragged items. - Repeating timers now reuse their timer id, so when their repetition interval is very short, you can always use the same link to remove them. - The handling of AO packets has been changed so that only 1 packet is processed at the same time. Prevents choking processing other streams like downloads or Discord relays in case of a lot of packages arriving at the same time. - Drastically speed up `!track addorg ` by pre-populating all entries with a ` logged off` event instead of doing this when the logoff-event hits the bot. - Only cache org-data in the file cache for 24h after the last org update at Funcom. - In the item search, the non-existing Small Ebony Figurines will now be marked accordingly. - The implant designer can once again set the QL of a slot even if it's currently empty. - Fix for Discord relay when messages contain empty categories - Started moving from DTOs to hydrators * Wed Aug 24 2022 Nadyita 6.1.0-1 - Commands and events can now be declared as Generators, which automatically makes them execute async and allows to "yield" results from promises. - Add a management-interface as an addition to the console. The management interface does not appear in the routes and currently supports tcp- and unix domain sockets. - "!track info " now also shows who added a character to the tracker. - Allow muting (temporarily disabling) of routes - Add the new RK19 worldbosses that spawn on the birthday event as non-repeating worldboss-timers, because they only have a chance to spawn, so we never know if a spawn was skipped or it just took longer to kill the last spawn. Also added waypoints and links to AOU-articles to each worldboss. - Add a new news-time "all-boss-timers" that will also show seasonal non-guaranteed spawns, like Desert Rider, Zaal, etc. - The SPAWNTIME_MODULE is now integrated into the WHEREIS_MODULE, giving everyone access to "!spawn " to query a mob's respawn-timer. - Add a new command "!updatewb" to update the world bosses from the API. Usually, this should not be necessary, because the global timer events should update these automatically, but this aids in debugging. - New event modifier "route-silently()" will make the message hub treat routed messages as if they hadn't been routed. This will allow you to route aotell() and still have the bot react to commands in the message. - Add "!wish"-command to manage wishlists - Add 2 new options for raid rewards: "max_raid_reward_height" to limit the amount of points "!raid reward" and "!raid punish" can give/take (does not apply to pre-defined raid-rewards) and "raid_reward_predefined_only" to limit "!raid reward" and "!raid punish" to names of raid rewards instead of arbitrary points. - Add "!sites ql " to search for unplanted sites able to hold towers of a given QL. - Sharing online-lists via nadynative will now also share each character's main. This allows two new grouping options for relay online lists: by main (player) and by org, then main (org/player). This only works properly if all Nadybots are running the same version. - Add "!fact"-command to show a random useless fact. - Add an option to automatically remove members from the bot if they haven't raided on any of their alts for a set period. - Migrate large portions of the bot's codebase to Amphp without breaking API compatibility. - Detection of when to display a QL for an item will now automatically detect symbiants and spirits and print their QL, even if they only exist in 1 QL. - The worldboss timers now ignore any updates for different dimensions. - Add new attributes to track when people became members of the bot and who added them. This is in addition to the audit functionality. Upgrading to this version will try to determine the date by using the audit tables, or assume "since now". - Use Discord's "resume_gateway_url" property instead of querying the Gateway each time, when resuming connections. - The "!updatecsv"-command was removed, because it hasn't been any use yet, and given how easy it is to upgrade the bot, there's no need to keep it and its complex mechanism. - The console history works 100% now, only ctrl+r-search is now broken. - The bot now correctly sets the name of the character who added someone to the tracker. - The timer you can enable when a tower field goes down sometimes couldn't be created, because a timer with the same name was already there. Any timer with the same name will now be deleted before creating a new one. - Not grouping relay online lists gives a proper "Alliance"-group again * Fri Jun 17 2022 Nadyita 6.0.5-1 - You can now sync bans and unbans via nadynative - When changing the message that should be send to Discord whenever your own towers are being attacked, the bot will now warn if there is no route in place to actually make use of this message. - Add a link to bank browse- and search-results to ask the bank character to give you a specific item, including its location. - The default discord notification for own towers being attack has been change to off. - You can no longer create Discord invites with `!discord join` if your account is already linked. - Add back the "loot" and "auction" links to loot lists - Automatically ignore if someone managed to set themselves as their own alt. This allows them to run `!alts setmain` on any of their alts again. * Sun Jun 05 2022 Nadyita 6.0.4-1 - Allow specifying the ql or ql-range to search for when using `!bank search` - The `TrackerFormatHandler` was moved to its correct namespace. - The nadybot-big image works again as expected. - Fix `!orglist` for RK19 * Fri May 27 2022 Nadyita 6.0.3-1 - New setting `add_header_ranges`. If enabled, in addition to Page X/Y, it will print the (sub-)header-ranges in that page (ADMIN -> TOWER_MODULE) as well, if the page is streuctured like that - Add support for Discord Slash-commands. The setting `discord_slash_commands` determines if they are disabled, only visible to the person sending them, or treated like a regular command and routed from/to the bot-channels. Because Discord allows a maximum of 100 global slash-commands, you have to use `!discord slash add|rem|pick` to configure which commands will be exposed. By default, some are exposed already that most people will probably want to, but this won't apply to everyone. - The name of every access-level-rank can now be changed freely. - The `!leaders`-command can now be configured to also show the admins and mods. - The colors that `!online` displays for ranks raid_leader and upwards, are now customizable. - Make "on"- and "off"-colors a configurable setting in the `COLORS` module - Add settings to configure the colors of `!tell`, `!cmd` and `!topic`. - Allow banning orgs without giving a reason - The `!track online`-command got a real parser now and supports filtering by level (ranges), title level (ranges), faction(s) and profession(s). - The message that's displayed when a tracked character goes on/offline is now completely configurable with {placeholders}. To display this properly, a new setting type `tracker_format` has been introduced that will display rendered and unrendered versions of the setting. There is also logic to remove `{org}` from the message is the character is not member of an org. - Gracefully support URLs for bank-CSV location. Download will be async with proper error handling. - Raid ranks in online-list are also shown for access-level "guild". - Joining and leaving voice chats will now display the linked AO character, if available. - Change the default "disabled/off"-color to a slightly lighter shade of red. - Due to a logic error, once a websocket connection timed out, chances were, it would constantly timeout again. - `!events setdate ` now understands a lot more date-formats. - Browsing bank backpacks accidentally showed each backpack as often as items were in the backpack. - Fix a non-critical error-message when running `!lc ` which would have turned into a hard error in PHP 8.2 * Tue May 10 2022 Nadyita 6.0.2-1 - Add a new property to raids, that allows to limit the maximum number of raiders. Can be set with either "!raid start limit " or "!raid limit ". - New command "!orgnote" to manage org-wide notes that can also be shared via Nadynative protocol. - New Docker image "nadybot-big" which includes the AOChatProxy, so only 1 container is needed to run bots with more than 1000 members. - New command "members inactive" to list members who haven't logged in for a given amount of time. - "!adminlist" now shows the last time the bot has seen each admin and on which alt. - Add new option "--strict" to make SQLite checks more strict. This is mainly for development purpose. - Add new prometheus metric states{type="raid_lock"} - The LOOT_MODULE now keeps a full history of what was rolled when, and who won what on which roll. You can search this history by using "!loot history", "!loot history |last", "!loot search winner=Nady" and "!loot search item=leg". - All Docker images now support setting fixed settings via setting environment variables "CONFIG_SETTING_=", e.g. "CONFIG_SETTING_CONSOLE_COLOR=1" - New commands "!config setting " and "!config setting admin " to change the required access level to change a setting's value. - Add new setting "raid_reward_requires_lock" to control if giving points via "!raid reward"/"!raid punish" requires the raid to be lock with "!raid lock". - The Docker image now supports setting multiple superadmins, either separated by comma, space or both. so "CONFIG_SUPERADMIN=Nady,Nadyita" and "CONFIG_SUPERADMIN='Nady Nadyita, Nadyo'" both work. - The "!discord"-command got completely changed. It now acts as the central command to manage the discord connection, manage Discord invites, see invites and leave Discord servers. To get people a Discord link, just have them "!discord join" and click the link, the bot will automatically rename the Discord user to match the main AO character and optionally also assign one or more Discord roles. - Add a new command "!assist random " to pick "" random callers from the currently running raid. You can exclude professions from this random pick by changing the "never_auto_callers" setting, default excludes docs and crats. - "!raid punish" now also accepts the name of a pre-defined reward, analogue to "!raid reward". - The loglevel of handlers used to always be ignored and scaled with the configuration option of channels. This has been changed so that the new log level "default" will now automatically scale, while explicitly given ones like "error" will always stay on error. This allows you to log error output into separate files. - Retries for 502 Http results are now delayed by 5s, in order not to hammer the webserver - The "!member"-command is now a sub-command of "!members", so "!members add " now works the same as "!member add". Access levels are migrated. - If audits are enabled ("!settings save audit_enabled 1"), "!whois " will now show information from the audit when and by whom the person was added to the bot. - "!auction" is now an alias of "!bid". The former was removed, because the command "!auction" was originally only added to have separate access levels for auctioneers and bidders and I didn't expect anyone to use "!auction start" over the alias "!bid start" and so on. - If no log files are available (Docker), don't show an empty popup. - Logging in Docker is now the same format as logfiles - not like console. - Locking the private channel is now persistent across bot restarts. - Location of the "text.mdb"-file was changed from "data/" to "res/", so it doesn't collide with user data and makes it easier for containers to just mount a generic data-folder into "/nadybot/data". - When configured to use a proxy, don't exit when the proxy isn't reachable, but retry until it is. This fixes cases when the chat proxy has lots of workers and takes longer to accept connection than Nadybot to start to connect. - Fix "/api/access_levels" endpoint and make settings webfrontend work again. - Fix for "!raid reward " and "!raid punish ". They both work again as expected. - Detect if the Discord Cloudflare server restart and also do an automatic reconnect in that case. In fact, make automatic reconnect the default, unless manually disconnected. - Websocket timeout detection works properly now and Discord should automatically reconnect after connection is lost. - Add new settings "webserver_min_al" to specify the overall required min access level for interacting with the bot via API or WebUI. Before this, using aoauth authentication would allow you to read the chat via the WebUI, because this target did not have a defined minimum access level. * Sun Apr 24 2022 Nadyita 6.0.1-1 - Allow hiding arbitrary characters from the online list, so you don't see other orgs' bots or can even hide their whole guest channel. - Support openSUSE tumbleweed packages - Warn when the buddylist is full - Add system(mass-message) and system(mass-invite) as route destinations, so you can finally route your tara/reaper spawns directly to mass invites. - Fix database creation from scratch - Fix GHSA-x7cr-6qr6-2hh6 / CVE-2022-24828 vulnerability * Tue Apr 19 2022 Nadyita 6.0.0-1 - Allow having more than 1 superadmin - Add a Prometheus-compatible metrics-endpoint to /metrics - New command "!showconfig" to get your current configuration, minus sensitive data - The console is now reporting in as a source, so you can actually use it for chatting. In order to do that, you should not make the command prefix optional. - Introduce a new access level "guest" for people in the private chat or Discord chat - Modules can now register themselves as AccessLevelProvider, so modules can manage their own access levels. The highest one (lowest numeric) will always be chosen. - The (sub-)command declaration can now define multiple aliases at once - Officially support Windows - Allow increased logging with -v and -v -v - Allow grouping of "!track online" lists by faction, org, gender and breed - Add "!buddylist rebalance" to rebalance your buddies across your proxies - Allow adding settings via Attributes - New 'timestamp' setting type - Defining the colors for relays is now possible directly in the "!relay"-window, including examples what the current config looks like. - Use the GMP module (if installed) for a faster login - Nadybot now supports color-themes and ships with 16 of these to make customizing your bot even easier. Just try "!themes" - Check extra modules for compile errors and compatibility with this bot version before loading. Treat " 5.3.3-1 - Number of unplanted sites is now correct when manually scouting - Fix "!online " - Fix penalty time - Error properly when running an unsupported SQLite version - Allow syncing news via nadynative - Handle the LOGIN_ERROR packet and display meaningful error messages - Add a configurable cool-down to mass-messages/-invites - Add a setting to limit command execution to a single discord channel * Thu Dec 23 2021 Nadyita 5.3.2-1 - Websocket-based relays will once again reconnect if the websocket server restarts - If a member of the bot accidentally attacks a CT, don't put them on the automatic track list - New command !towerqty to show how many towers your level allows you to plant - New command !towertype to show the tower types by QL - Allow queueing of relay messages if the relay is down, so restarting a relay-bot won't lead to lost messages. * Sun Dec 19 2021 Nadyita 5.3.1-1 - Fix a race condition in database migrations which would throw an error that the timers table didn't exist - Fix migration errors for some MySQL versions that did not allow creating an index on the organizations table - Support new Father Time worldboss * Sat Dec 11 2021 Nadyita 5.3.0-1 - Fix discord relay sometimes not showing the name of the person saying something on Discord - Fix a race condition where quickly banning and unbanning an org resulted in an error. - Race condition for the shared online list fixed, which lead to players shown as online when they already logged off - Fixed tyrbot() protocol errors when relaying only with a prefix - Fix genRandomString() from sometimes returning less chars than requested This also fixes Sec-WebSocket-Key from being non-standard sometimes - Make websockets more robust, testing against autobahn testsuite - Don't try to relay messages to uninitialized arrays - Highway didn't properly deinit its relay stack, leading to lingering websocket connections. - PHP8 fix when "!orglist" had an unused org rank - Tower attacks should now always be assigned to the correct tower field by using boundary boxes from Tyrbot - Commands longer than 20 chars won't throw errors in the usage module anymore - A fake attacker will now show up properly in "!attacks" - "!sites" now considers local scout data to be newer than API data - Don't treat mute/unmute and deafen/undeafen as joining a Discord channel - When sharing database with other bots, don't share their online lists via relays - Discord reconnects won't forget the channels anymore This will prevent the bot from stopping to relay from discord after a reconnect. - Fix a rare condition where the event loop would just hang and throw errors - To help 32bit systems, convert some Discord data types from int to string - Fix setting the bot's timezone with "!timezone" - Now all syntax variants of the SPIRITS_MODULE work as expected - Running "!whatbuffsfroob " no longer throws an exception - Running "!arulsaba 6 left" no longer throws an exception - Running "!lookup " will now run an actual lookup and display the data - !hot command honors first argument again - !test commands work again as expected - Fixed race condition of the orglist test - sync-online=false now behaves as expected for nadynative() It will still route online events when you route org- and private channels to the relay. Filter these events if you don't want that. - Convert all Aria tables to InnoDB as it doesn't support transactions. - Fix displaying of route modifiers with <, > or " - Fix the if-matches() modifier - Allow the use of @here for people allowed to use mentions and messages from the bot itself - Fix for old SQLite versions that do not support adding new non-null columns to the database without default - Fix for discord roles with too many permissions - Fixed some errors in the tracker and orglist module - Fix migration of tower data from pre-5.2.2 release - New WORLDBOSS_MODULE to track tara, vizaresh, etc. as well as the gauntlet buff. This obsolete's the old external GAUNTLET_MODULE and BIGBOSS_MODULE. The old "!bb" is now "!wb" - Add an option to group the online list by faction - New command "!loglevel" to temporary change the loglevel - New command "!debug" to debug a single command and upload the logs - Lots of logging added for better debugging - Nadybot will now automatically receive events like world bosses spawning or Gauntlet buffs being popped and set the timers accordingly. This is done by connecting to the public highway server and joining a room that sends these events. Option can be turned off in the RELAY_MODULE - Automatically fetch the current worldboss and gauntlet timers from our API when connecting. No more need for manual timers. - Add option to autokick players not in the raid on raid lock - Speed up the "!orglist" command by skipping the UID lookup and instead using the UID the org roster contains - Show channel class in "!system" - Add "!db3" command to show DB3 loot - Merge the IMPQL_MODULE into the IMPLANT_MODULE - Make the rank required to cancel another player's raffle a setting - Add ability to define immutable values for any setting in the config file - Add separate kill message when using worldboss kill or kill sync - Add raid statistics to "!leaders" command - Display event descriptions with "!relay config" command - Non-routable events can now be relayed via supporting protocols (currently only nadynative). Non-routable events are a special type of event that are shared via nadynative relays. These include tower scouting, tara spawn, timers, countdown, etc. - New command "!raid notinkick" to kick every character on the private channel who's not in the raid. - New event modifier "change-message()" that allows you to modify messages with prefixes (like @here) and search & replace - New customizable "news" page that can be shown on login. This one can be made up from individual "tiles", so you have a single start/welcome message displaying multiple tiles, like gauntlet buff, current arbiter, actual unread news, tara spawn, etc. The content of this page can be customized with "!startpage" - Upgraded all required packages to latest version and resolved issues - Replaced the logging framework from log4php with monolog - Added missing table indices - Switched to the new history API - Reduce tracker SQL queries to speed up "!orglist" for large orgs - Sort the "!track online" characters by name in their group - Removed "!lc import" - Users tracked via "!track addorg" don't show on "!track" anymore - The whole code base is now PHP 8.1 compatible - Converted all commands to new command parser - Also explain that postgresql is a valid database type - Fix all possible undefined and type errors by utilizing 2 static code analyzers phpstan and psalm - Upgrade to latest illuminate/database version - Convert all text files from DOS to UNIX line ending - Reword the SKILL_MODULE help files - Add loads of parameter classes for things like implant slots, items or faction - More consistent "!config" and "!settings" layout - Make running tests non-blocking - "!trickle " output changed so it's easier to understand - Remove PvP rank from "!whois" as it's a fixed value - Support relay events properly via the API - Allow dynamically added events to have a description - Support custom setting handlers with new "@SettingHandler()" annotation. This allows modules to have their own custom setting types. - Group subcommands below their commands in "!config" - The alignment in tower pop-up messages is now colorized - New syntax for writing commands The old way was to write a function and declare the command it was for and a regular expression that needs to match for this function to be used. Then the function was given 5 well-defined arguments, so you could not easily add new parameters to those. The new way just gives one parameter, a CmdContext instance that contains everything the old parameters had, but is more extensible. You also no longer define a regular expression that needs to match, but give the parameters your command needs as additional parameters to your function. The old syntax will still be supported until at least 7.0 release. See the WIKI for details. * Wed Oct 20 2021 Nadyita 5.2.2-2 - Rewritten tower module to support Tyrence's tower API as well as manual scouting and mixed mode. - New commands !lock/!unlock to lock/unlock the private channel to a certain rank and upwards so you can perform maintenance work - Welcome messages: When a file data/welcome.txt exists, new members will get a tell with this in a popup. Used to welcome them, explain basic things like netiquette, rules, etc. - Route colors now support the "via" clause. Colors can now be defined depending on which hop (e.g. relay) they pass - The track module now allows tracking whole orgs with "!track addorg" Since this will also add their bots, you can now hide and unhide individual chars from the !track online list. - Timers are now channels and can be routed. - Orglist will now be available immediately after bot start. - Profiles now save and restore routes, relays and their colors. - New option for !online allows to send 2 tells with online lists (local and alliance) - More compatibility options for agcr() - Add a new setting that allows to spin up one or more threads that continually lookup missing or outdated player data. - Support unsupported PFs in !rally - Fix GHSA-frqg-7g38-6gcf vulnerability - Fix bug in !route color rem - Fix possible sleep-bug with websockets - Fix relayed online list error when player lookup failed - Convert events to messages for Tyrbot - Fix gcr message send/receive - Fix some tyrbot protocol issues - Changing settings now generates a SettingEvent - Add more backtraces to errors and errors better searchable. - Use libsodium for encryption if present - Return extended help for settings via API * Fri Sep 17 2021 Nadyita 5.2.1-1 - Added aoauth support to the webserver - !logs command with search will now include backtraces - The converter for agcs() created an invalid route modifier - Errors in route modifiers affected things like online/offline messages - Routable messages with null message threw exceptions * Sun Sep 12 2021 Nadyita 5.2.0-1 - Complete relay stack rewrite: - Allow any number of relays, each with its own prefix, protocol, transport, etc. You can use any protocol with any transport (Tyrbot via AMQP, BeBot via Websocket, etc.) - Support BeBot's relay protocol - Support Tyrbot's relay protocol - Integrate agcr protocol from ALLIANCE_RELAY_MODULE - Add new native relay protocol for Nadybot - Support custom relay-stack layers. Built-in are: - encryption, relaying over websockets and sharing online lists - Complete messaging rewrite, introducing the message hub: - Allows routing messages from any supported channel to another channel - Supports wildcards as channel source - Supports custom modifiers. Built-in are: - if-has-prefix(), remove-popups(), if-matches(), if-not-by() and many more - Allow setting if and how a tag is displayed for each of the hops a message passes - Allow configuring the color of each of the tags and texts rendered, depending on source and target hop. This allows for custom colors for private channel, web chat, console... - New security module that lets you configure to log security-relevant events and makes them available via !audit command and API calls - API endpoint /org/history to complement the audit API - Support for signed API calls, so pure API-calls don't need to re-authenticate once per hour. - Thanks to the message hub, you can now route messages into the console and into the webchat. Yes, even Darknet, relays and discord... everything - API spec is now tagged for better overview - The !logs command now works if you have them somewhere else than ./logs/ - Rendering certain popups in Discord looked wrong (e.g. !alts) - When updating the bot via git, you also have to run !composer install to see if all required modules are present. Bot will now check for this and give you a meaningful error-message - Since routing is done by name now, changing your discord channel name can break your routing. * Thu Aug 26 2021 Nadyita 5.1.3-1 - Allow manual adjusting which arbiter week it is * Sun Jul 11 2021 Nadyita 5.1.2-1 - Add setting to prevent joining the raid multiple times with alts - Tower module overhaul: - Now supports static and legacy timing - New command !needsscout to list fields without information - New command !hot to list all sites currently hot - Remove old sanity check from the !scout command - they didn't apply anymore - Fix Windows running on SQLite - HTML-escaped colors will now display properly in the console - Repeating timers work again - The docker images will now handle !restart commands internally - Better error messages if the bot cannot create the SQLite database - Support multiple embeds for Discord * Tue Jun 29 2021 Nadyita 5.1.1-1 - Allow banning whole orgs with `!orgban` - Add an option to automatically add players attacking towers to the tracking list - Add an option to prevent people from inviting banned players - Changing access level for commands didn't work - Some (sub)commands would show up twice in the cmdlist and module config - Added location hints for world bosses * Thu Jun 24 2021 Nadyita 5.1.0-1 - Moved to Illuminate database abstraction layer, adding support for PostgreSQL and partly MSSQL - Updated items to 18.08.58 patch - Support upper and lower limit for raid point reimbursement - Add an option to limit raffles to raid members - raid history now supports showing when people joined and left the raid, regardless of whether they got points or not. - Minus is showing in !calc again - People who left no longer show in !raid dual - Online count by org displays percentages correctly again - Stopping a raid can now automatically clear the callers - !raid will now give the control panel in a tell - Automatically kick banned people from the bot - Use Discord's API v9 - Add all missing totw loot - The old database interface is now deprecated and will be removed in 5.2 * Sat Apr 24 2021 Nadyita 5.0.2-1 - New !rules command - parameter order for !ofabarmor doesn't matter anymore - Rewards can be edited without changing the reason - Callers reworked, now supporting history and other fancy stuff - Minimum refund tax can now be defined - Introduce raid rank promotion/demotion distance - Sync player data update with PORK - New command: !arulsaba - Allow to set the autoinvite default setting for new members - Allow automatic banning of players from or not from a specific faction - Add an option whether to show the full altlist on joining/logging in - New command: !leaderlist/!leaders - !alts setmain will now move the rights and raid points to the new main - New rights for starting/ending raffles - Allow configuration of !cd command and where it should cd in tells - Allow customization of auction layout - !points log all to see the raid points of this char and all their alts - Package now works with CentOS/RHEL - Timers with apostrophe can now be deleted - Allow arbitrary length auctgion items - Never invite banned players - Fixed Race condition for duplicate data in the players table - Multiline parameters are accepted again for commands - Raid points are no longer attributes to the main, but to the alt now - No massinvites/-messages for banned characters anymore - Turning off the autoinvites does not remove you from the buddylist anymore - Allow endlessly long raid point reasons - Fix the !symb command when searching for artillery, infantry, etc. - Chased the new arbiter times in !icc command - Reword alts help page - Don't say "private channel", unless we are an org bot - If PORK shows an attacker without org as well, don't presume it's a pet with fake name - Update dependencies to get rid of a security issue - Try to detect the amount in raffles better and introduce unlimited raffle slots with 0x - When changing a setting, display its new display value - !raid listnow separates between common and individual gains/losses - The news now have an API and are handled in NadyUI - The Docker image has the option CONFIG_ENABLE_PACKAGE_MODULE to allow the package module * Thu Mar 25 2021 Nadyita 5.0.1-1 - Support configuration of base paths - Support packaging as RPM and DEB * Sat Mar 20 2021 Nadyita 5.0.0-1 - Add possibility to set default values for alias parameters - Allow customization of the colors of tradebot channels - Completely rework the !perk command - Add the AI perks - Add actions given - Add grouping - Allow `!whatbuffs` to mark one-slotted items, nodrops and uniques - Support listing of all comments of a type - Symbiant revamp and fuzzy finding symbiant types with `!symb` command - Introduce reminders for `!notes` - Mark "Self Illumination" and "The Rihwen" as tradeskillable nanos - Ensure we don't have duplicate entries in players table - Integrate an exporter/importer for backups and bot transfers - Add configuration for raid add/raid kick messages - Configurable min length for points manipulation (`!points add`/`!point rem` reason) - `!raid kick` is now case-insensitive regarding the name to be kicked - Fix searching for non-existing skill in premade imps - Fix `!orghistory 0` - Fix DB format for waypoints in !rally, they didn't work after restarts - Fix for MySQL 5.5 and 5.6 - Fix Auction links for !loot command - Fix `!raid refund` help to properly show how it's used - Fixed "Soothing Herbs" proc classification - Reclassify some nanos to different locations - Fix Windows installer * Sat Feb 06 2021 Nadyita 5.0.0~RC.5-1 - Allow disabling mass tells in the bot (#69) - Support rate-limited proxy for when we send mass tells via more than 1 worker - Added guide for inferno key pocket bosses - Merge WBF_MODULE into standard modules (#73) You can now use `!wbf` like `!whatbuffs` but will only see items usable by froobs - Introduce the `!icc` command to query current or upcoming arbiter events - Support the new NadyUI web chat (#78) - Add new raffle features (#83) - Raffle admin menu - Allow turning off raffle timeout in config options - Support raffle re-announcements - Allow mapping org ranks to bot access levels (#84) - Add new `!package` command for dynamic installation and update of optional modules from https://pkg.aobots.org (#98) - Colorize item matches if only a certain QL(range) matches the search term (#101) - Generic `COMMENT_MODULE` (#102) - Replaces the `REPUTATION_MODULE`. - Comments can be configured to be shareable - Comments can be bulk queried for everyone in the raid with `!raid comments` - Have !online list show who's in the raid if configured. Multiple formats available. - Add a setting to always ban all alts of a player (#108) - Console enhancements: - Support nano-links in the console - Support colors in the console - Fix the dynadb and display (#71) - Fix alignment of `!updateorg` timer to always be at 10 mins after last update - Fix bots relaying their own Discord messages - Fix nanos: - Fixed and added multiple locations. A lot of inf sanctuary nanos were also buyable in Pandemonium garden. - Make overview better to read - Reclassified Vehicle nanos - Added legacy Adventurer nanos and Playful Cub (Other) - Fix crash in Discord output when more than 10 parts were sent - Support SQLite < 3.23.0 (#86) - Fix all known Php8 issues (#109) and always build a php8 docker image for testing purpose (#112) - Support db reconnects (#110) Bot can now start without DB and will detect if the DB was restarted - Adhere to Discord rate-limits when sending messages via PMs or channels (#113) - Always allow alts confirm/decline (#68) - Add "Inert Reaper of Time" to bossloot - Only show the loot searched for in `!bossloot` and not everything the bosses drop - Added Go LFT link to raid information window (#74) - Support worker pong and command negotiation (#75) - Move Nucleus Basalis ring into ring category - Allow searching for tower sites without space after zone (`!lc PW8` instead of `!lc PW 8`) - Reduce and check the required PHP extensions on startup (#111) No more OpenSSL module * Sun Dec 27 2020 Nadyita 5.0~RC4-1 - Fix crash in `!bio` command - Fix for dynamic settings not showing values - Final fix for column exist in MySQL - Support new AOChatProxy and [its mass tell features](https://github.com/Nadybot/Nadybot/wiki/AOChatProxy) - Allow to configure which tradebot channels to relay - Add subway and totw loot to boss command - Add documentation to modules to show in NadyUI and the `!config ` - Convert Buddylist-entries to objects - Track if orglist is ready, so you get proper "please wait" messages - Use a different algorithm to send out mass messages and invites - Allow elegant overwriting of base instances * Sun Dec 20 2020 Nadyita 5.0~RC3-1 - Bugfix release to avoid looped conversion of alts table * Sat Dec 19 2020 Nadyita 5.0~RC2-1 - Do not send alt validation request from multiple bots - Prevent a rare hanging scenario when reading past the MDB EOF - Fix Discord for some 32bit systems when the bot was member in a lot of servers - Never exit due to PHP 7.4 type errors - Lots of crash scenarios fixed - Allow `!alts main ` again and allow confirmation of alt and/or main - Speed up orglist by roughly 30% by not sending uid lookup packets twice - Try to align guild roster updates with the Funcom export time, so we're always updating 10 mins after them - Handle custom emojis in Discord, delete unsupported chars from Discord names and properly support `’` - Add `!assist ` for a quick alternative to `!caller add ` - Add more buttons to callers - Use cache for ao-universe guides - Introduce the ability to execute commands via the API, fully supported by NadyUI which now has a command line - Remove SSL-support from the webserver as it's untested - Switch default neutral color to old one - Remove old and outdated guides and spice up the remaining ones * Sun Dec 06 2020 Nadyita 5.0~RC1-1 - Move last bits of sync HTTP calls to callbacks. This should finally fix all outstanding Windows bugs and speed up `!orglist ` by large. - Move more tells to spam messages to allow load-balancing them - Tower attacks warn about fake names now - Pre-made imps are now (hopefully) displayed better and also fixed 2 wrong ones. 1HE shiny head would be too odd… - Allow searching via skill aliases in the pre-made imps now, so `!premade mc` really works - Any emoji that's send on discord will now be converted to `::` if it cannot be displayed in AO - Add new command `!reward ` to manage pre-defined rewards which can then be used with `!raid reward`, so you can use `!raid reward beast` if you defined it before. This will now also allow to log reasons for why a raid reward was given with `!raid reward `. - The console now also allows the use of the symbol prefix, so you can easily copy & paste commands - Introduce the ability to set a separate prefix for Discord and allow to turn off messages when a command is unknown. - Disable the console on Windows as it doesn't work without blocking everything :o( - Enable the WebUI per default now, only listening on localhost - Fixed more 32bit issues - Fix links in discord headers not working - Fix a MySQL crash when a fake attacker charmed a pet with a too long name - Fix a rare Discord crash when someone joins an unknown voice channel - Fixed a crash when GSP's provider had erroneous JSON - Fix min-level requirement check for commands in tells - Fix tower attacks not recording defending org - Break too long messages into chunks for Discord, so messages aren't dropped any more * Fri Nov 27 2020 Nadyita 5.0~beta4-1 - Fix index creation for older MySQL versions * Fri Nov 27 2020 Nadyita 5.0~beta3-1 - Support Windows and include an installer for PHP - Support 32bit - Support older MySQL alongside MariaDB - Switch from MyISAM to aria as default if available - Support PHP8 - `!bossloot ` will now just log an error instead of crashing when an item cannot be found - Add rate-limit functionality to the `LIMITS` module so you can auto-kick/ban/ignore players that are sending commands at a too high rate - Serialize outgoing Discord messages, so the order is always guaranteed to be correct. This slows sending messages a bit down as we're not sending multiple messages in parallel anymore, but at least they arrive in the correct order. - Support Discord mentions - Allow the use of `!extauth request` outside of Discord DMs - Fix SQL error in `!config cmd disable/enable` command - Fix the `LEVEL_MODULE` ranges - Switch even more HTTP lookups to async, so they don't slow down the bot, greatly increasing responsiveness when the `ORGLIST_MODULE` is enabled - Reduced bot startup by adding some long overdue indexes to some core tables and not always adding all recipes yet again - Add a `!track online` command alongside a more customizable tracker output - Move the StdIn console into its own core module and fall back to buffered stdin for platforms wirthout readline * Sun Nov 15 2020 Nadyita 5.0~beta2-1 - Prevent unauthorized access to Discord token - Support Windows - Allow to turn off afk and brb without prefix * Sat Nov 14 2020 Nadyita 5.0 beta-1 - First beta release