From 6f64a15cd43f6595112f993666e44d81b04fae34 Mon Sep 17 00:00:00 2001 From: Toastie <toastie@toastiet0ast.com> Date: Sat, 1 Mar 2025 18:43:46 +1300 Subject: [PATCH] Removed some unnecessary fonts Removed gold/silver frames as they are unnecessary Updated XP card and updated xp_template.json Started simplification of Patron system. There will only be 3 tiers --- LICENSE | 756 ++++++++++++++---- src/EllieBot/Bot.cs | 2 +- .../Db/Extensions/DiscordUserExtensions.cs | 11 +- .../Modules/Gambling/Slot/SlotCommands.cs | 8 +- .../Modules/Patronage/PatronageService.cs | 19 +- .../Modules/Utility/Info/InfoCommands.cs | 102 ++- src/EllieBot/Modules/Xp/Club/ClubService.cs | 4 - src/EllieBot/Modules/Xp/XpService.cs | 169 +--- src/EllieBot/Modules/Xp/XpTemplateService.cs | 82 ++ .../Modules/Xp/common/FullUserStats.cs | 6 - src/EllieBot/Modules/Xp/common/XpTemplate.cs | 129 +-- src/EllieBot/_common/Patronage/PatronTier.cs | 5 +- .../_common/Services/Impl/FontProvider.cs | 11 - .../_common/Services/Impl/ImagesConfig.cs | 25 +- .../_common/_Extensions/DbExtensions.cs | 2 +- src/EllieBot/data/fonts/Uni Sans.ttf | Bin 50856 -> 0 bytes src/EllieBot/data/fonts/dotty.ttf | Bin 51848 -> 0 bytes src/EllieBot/data/images.yml | 4 +- src/EllieBot/data/images/frame_gold.png | Bin 49859 -> 0 bytes src/EllieBot/data/images/frame_silver.png | Bin 13319 -> 0 bytes src/EllieBot/data/xp_template.json | 71 +- 21 files changed, 800 insertions(+), 606 deletions(-) create mode 100644 src/EllieBot/Modules/Xp/XpTemplateService.cs delete mode 100644 src/EllieBot/data/fonts/Uni Sans.ttf delete mode 100644 src/EllieBot/data/fonts/dotty.ttf delete mode 100644 src/EllieBot/data/images/frame_gold.png delete mode 100644 src/EllieBot/data/images/frame_silver.png diff --git a/LICENSE b/LICENSE index 87fa19d..f4aa842 100644 --- a/LICENSE +++ b/LICENSE @@ -1,201 +1,619 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ + GNU AFFERO GENERAL PUBLIC LICENSE + Version 3, 19 November 2007 - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/> + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. - 1. Definitions. + Preamble - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. + The GNU Affero General Public License is a free, copyleft license for +software and other kinds of works, specifically designed to ensure +cooperation with the community in the case of network server software. - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +our General Public Licenses are intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. + Developers that use our General Public Licenses protect your rights +with two steps: (1) assert copyright on the software, and (2) offer +you this License which gives you legal permission to copy, distribute +and/or modify the software. - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. + A secondary benefit of defending all users' freedom is that +improvements made in alternate versions of the program, if they +receive widespread use, become available for other developers to +incorporate. Many developers of free software are heartened and +encouraged by the resulting cooperation. However, in the case of +software used on network servers, this result may fail to come about. +The GNU General Public License permits making a modified version and +letting the public access it on a server without ever releasing its +source code to the public. - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. + The GNU Affero General Public License is designed specifically to +ensure that, in such cases, the modified source code becomes available +to the community. It requires the operator of a network server to +provide the source code of the modified version running there to the +users of that server. Therefore, public use of a modified version, on +a publicly accessible server, gives the public access to the source +code of the modified version. - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). + An older license, called the Affero General Public License and +published by Affero, was designed to accomplish similar goals. This is +a different license, not a version of the Affero GPL, but Affero has +released a new version of the Affero GPL which permits relicensing under +this license. - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. + The precise terms and conditions for copying, distribution and +modification follow. - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." + TERMS AND CONDITIONS - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. + 0. Definitions. - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. + "This License" refers to version 3 of the GNU Affero General Public License. - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and + A "covered work" means either the unmodified Program or a work based +on the Program. - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. + 1. Source Code. - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. - END OF TERMS AND CONDITIONS + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. - APPENDIX: How to apply the Apache License to your work. + The Corresponding Source for a work in source code form is that +same work. - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. + 2. Basic Permissions. - Copyright 2025 Toastie_t0ast + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. - http://www.apache.org/licenses/LICENSE-2.0 + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. \ No newline at end of file + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Remote Network Interaction; Use with the GNU General Public License. + + Notwithstanding any other provision of this License, if you modify the +Program, your modified version must prominently offer all users +interacting with it remotely through a computer network (if your version +supports such interaction) an opportunity to receive the Corresponding +Source of your version by providing access to the Corresponding Source +from a network server at no charge, through some standard or customary +means of facilitating copying of software. This Corresponding Source +shall include the Corresponding Source for any work covered by version 3 +of the GNU General Public License that is incorporated pursuant to the +following paragraph. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the work with which it is combined will remain governed by version +3 of the GNU General Public License. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU Affero General Public License from time to time. Such new versions +will be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU Affero General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU Affero General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU Affero General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS \ No newline at end of file diff --git a/src/EllieBot/Bot.cs b/src/EllieBot/Bot.cs index 4c7a7cb..2972214 100644 --- a/src/EllieBot/Bot.cs +++ b/src/EllieBot/Bot.cs @@ -97,7 +97,7 @@ public sealed class Bot : IBot await using (var uow = _db.GetDbContext()) { - uow.EnsureUserCreated(bot.Id, bot.Username, bot.Discriminator, bot.AvatarId); + uow.EnsureUserCreated(bot.Id, bot.Username, bot.AvatarId); } // var svcs = new StandardKernel(new NinjectSettings() diff --git a/src/EllieBot/Db/Extensions/DiscordUserExtensions.cs b/src/EllieBot/Db/Extensions/DiscordUserExtensions.cs index f8105c3..cd562dc 100644 --- a/src/EllieBot/Db/Extensions/DiscordUserExtensions.cs +++ b/src/EllieBot/Db/Extensions/DiscordUserExtensions.cs @@ -17,7 +17,6 @@ public static class DiscordUserExtensions this DbContext ctx, ulong userId, string username, - string discrim, string avatarId) => ctx.GetTable<DiscordUser>() .InsertOrUpdate( @@ -65,11 +64,10 @@ public static class DiscordUserExtensions this DbContext ctx, ulong userId, string username, - string discrim, string avatarId, Func<IQueryable<DiscordUser>, IQueryable<DiscordUser>> includes = null) { - ctx.EnsureUserCreated(userId, username, discrim, avatarId); + ctx.EnsureUserCreated(userId, username, avatarId); IQueryable<DiscordUser> queryable = ctx.Set<DiscordUser>(); if (includes is not null) @@ -78,13 +76,6 @@ public static class DiscordUserExtensions } - public static int GetUserGlobalRank(this DbSet<DiscordUser> users, ulong id) - => users.AsQueryable() - .Where(x => x.TotalXp - > users.AsQueryable().Where(y => y.UserId == id).Select(y => y.TotalXp).FirstOrDefault()) - .Count() - + 1; - public static Task<List<DiscordUser>> GetTopRichest( this DbSet<DiscordUser> users, ulong botId, diff --git a/src/EllieBot/Modules/Gambling/Slot/SlotCommands.cs b/src/EllieBot/Modules/Gambling/Slot/SlotCommands.cs index c38f646..aac38c4 100644 --- a/src/EllieBot/Modules/Gambling/Slot/SlotCommands.cs +++ b/src/EllieBot/Modules/Gambling/Slot/SlotCommands.cs @@ -180,17 +180,17 @@ public partial class Gambling Color fontColor = Config.Slots.CurrencyFontColor; - bgImage.Mutate<Rgba32>(x => x.DrawText(new RichTextOptions(_fonts.DottyFont.CreateFont(65)) + bgImage.Mutate<Rgba32>(x => x.DrawText(new RichTextOptions(_fonts.NotoSans.CreateFont(35)) { HorizontalAlignment = HorizontalAlignment.Center, VerticalAlignment = VerticalAlignment.Center, WrappingLength = 140, - Origin = new(298, 100) + Origin = new(295, 100) }, ((long)result.Won).ToString(), fontColor)); - var bottomFont = _fonts.DottyFont.CreateFont(50); + var bottomFont = _fonts.NotoSans.CreateFont(50); bgImage.Mutate(x => x.DrawText(new RichTextOptions(bottomFont) { @@ -206,7 +206,7 @@ public partial class Gambling { HorizontalAlignment = HorizontalAlignment.Center, VerticalAlignment = VerticalAlignment.Center, - Origin = new(393, 480) + Origin = new(393, 479) }, ownedAmount.ToString(), fontColor)); diff --git a/src/EllieBot/Modules/Patronage/PatronageService.cs b/src/EllieBot/Modules/Patronage/PatronageService.cs index 17e418c..3a30c99 100644 --- a/src/EllieBot/Modules/Patronage/PatronageService.cs +++ b/src/EllieBot/Modules/Patronage/PatronageService.cs @@ -384,12 +384,9 @@ public sealed class PatronageService return user.AmountCents switch { - >= 10_000 => PatronTier.C, - >= 5000 => PatronTier.L, - >= 2000 => PatronTier.XX, - >= 1000 => PatronTier.X, - >= 500 => PatronTier.V, - >= 100 => PatronTier.I, + <= 200 => PatronTier.I, + <= 1_000 => PatronTier.C, + <= 5_000 => PatronTier.L, _ => PatronTier.None }; } @@ -402,12 +399,10 @@ public sealed class PatronageService public int PercentBonus(long amount) => amount switch { - >= 10_000 => 100, - >= 5000 => 50, - >= 2000 => 30, - >= 1000 => 20, - >= 500 => 10, - _ => 0 + < 200 => 0, + < 1_000 => 10, + < 5_000 => 50, + _ => 100 }; private async Task SendWelcomeMessage(Patron patron) diff --git a/src/EllieBot/Modules/Utility/Info/InfoCommands.cs b/src/EllieBot/Modules/Utility/Info/InfoCommands.cs index c9d4ab2..88232a9 100644 --- a/src/EllieBot/Modules/Utility/Info/InfoCommands.cs +++ b/src/EllieBot/Modules/Utility/Info/InfoCommands.cs @@ -1,5 +1,4 @@ #nullable disable -using System.Text; using EllieBot.Modules.Patronage; namespace EllieBot.Modules.Utility; @@ -34,31 +33,35 @@ public partial class Utility { var guild = (IGuild)_client.GetGuild(guildId) ?? await _client.Rest.GetGuildAsync(guildId); - + if (guild is null) return; var ownername = await guild.GetUserAsync(guild.OwnerId); var textchn = (await guild.GetTextChannelsAsync()).Count; var voicechn = (await guild.GetVoiceChannelsAsync()).Count; - var channels = $@"{GetText(strs.text_channels(textchn))} -{GetText(strs.voice_channels(voicechn))}"; + var channels = $""" + {GetText(strs.text_channels(textchn))} + {GetText(strs.voice_channels(voicechn))} + """; var createdAt = new DateTime(2015, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc).AddMilliseconds(guild.Id >> 22); var features = guild.Features.Value.ToString(); if (string.IsNullOrWhiteSpace(features)) features = "-"; var embed = CreateEmbed() - .WithAuthor(GetText(strs.server_info)) - .WithTitle(guild.Name) - .AddField(GetText(strs.id), guild.Id.ToString(), true) - .AddField(GetText(strs.owner), ownername.ToString(), true) - .AddField(GetText(strs.members), (guild as SocketGuild)?.MemberCount.ToString() ?? guild.ApproximateMemberCount?.ToString() ?? "?", true) - .AddField(GetText(strs.channels), channels, true) - .AddField(GetText(strs.created_at), $"{createdAt:dd.MM.yyyy HH:mm}", true) - .AddField(GetText(strs.roles), (guild.Roles.Count - 1).ToString(), true) - .AddField(GetText(strs.features), features) - .WithOkColor(); + .WithAuthor(GetText(strs.server_info)) + .WithTitle(guild.Name) + .AddField(GetText(strs.id), guild.Id.ToString(), true) + .AddField(GetText(strs.owner), ownername.ToString(), true) + .AddField(GetText(strs.members), + (guild as SocketGuild)?.MemberCount.ToString() ?? guild.ApproximateMemberCount?.ToString() ?? "?", + true) + .AddField(GetText(strs.channels), channels, true) + .AddField(GetText(strs.created_at), $"{createdAt:dd.MM.yyyy HH:mm}", true) + .AddField(GetText(strs.roles), (guild.Roles.Count - 1).ToString(), true) + .AddField(GetText(strs.features), features) + .WithOkColor(); if (Uri.IsWellFormedUriString(guild.IconUrl, UriKind.Absolute)) embed.WithThumbnailUrl(guild.IconUrl); @@ -82,12 +85,12 @@ public partial class Utility var createdAt = new DateTime(2015, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc).AddMilliseconds(ch.Id >> 22); var usercount = (await ch.GetUsersAsync().FlattenAsync()).Count(); var embed = CreateEmbed() - .WithTitle(ch.Name) - .WithDescription(ch.Topic?.SanitizeMentions(true)) - .AddField(GetText(strs.id), ch.Id.ToString(), true) - .AddField(GetText(strs.created_at), $"{createdAt:dd.MM.yyyy HH:mm}", true) - .AddField(GetText(strs.users), usercount.ToString(), true) - .WithOkColor(); + .WithTitle(ch.Name) + .WithDescription(ch.Topic?.SanitizeMentions(true)) + .AddField(GetText(strs.id), ch.Id.ToString(), true) + .AddField(GetText(strs.created_at), $"{createdAt:dd.MM.yyyy HH:mm}", true) + .AddField(GetText(strs.users), usercount.ToString(), true) + .WithOkColor(); await Response().Embed(embed).SendAsync(); } @@ -102,17 +105,17 @@ public partial class Utility .AddMilliseconds(role.Id >> 22); var usercount = role.Members.LongCount(); var embed = CreateEmbed() - .WithTitle(role.Name.TrimTo(128)) - .WithDescription(role.Permissions.ToList().Join(" | ")) - .AddField(GetText(strs.id), role.Id.ToString(), true) - .AddField(GetText(strs.created_at), $"{createdAt:dd.MM.yyyy HH:mm}", true) - .AddField(GetText(strs.users), usercount.ToString(), true) - .AddField(GetText(strs.color), - $"#{role.Color.R:X2}{role.Color.G:X2}{role.Color.B:X2}", - true) - .AddField(GetText(strs.mentionable), role.IsMentionable.ToString(), true) - .AddField(GetText(strs.hoisted), role.IsHoisted.ToString(), true) - .WithOkColor(); + .WithTitle(role.Name.TrimTo(128)) + .WithDescription(role.Permissions.ToList().Join(" | ")) + .AddField(GetText(strs.id), role.Id.ToString(), true) + .AddField(GetText(strs.created_at), $"{createdAt:dd.MM.yyyy HH:mm}", true) + .AddField(GetText(strs.users), usercount.ToString(), true) + .AddField(GetText(strs.color), + $"#{role.Color.R:X2}{role.Color.G:X2}{role.Color.B:X2}", + true) + .AddField(GetText(strs.mentionable), role.IsMentionable.ToString(), true) + .AddField(GetText(strs.hoisted), role.IsHoisted.ToString(), true) + .WithOkColor(); if (!string.IsNullOrWhiteSpace(role.GetIconUrl())) embed = embed.WithThumbnailUrl(role.GetIconUrl()); @@ -130,31 +133,29 @@ public partial class Utility return; var embed = CreateEmbed() - .AddField(GetText(strs.name), $"**{user.Username}**#{user.Discriminator}", true); + .AddField(GetText(strs.name), $"**{user.Username}**#{user.Discriminator}", true); if (!string.IsNullOrWhiteSpace(user.Nickname)) embed.AddField(GetText(strs.nickname), user.Nickname, true); var joinedAt = GetJoinedAt(user); embed.AddField(GetText(strs.id), user.Id.ToString(), true) - .AddField(GetText(strs.joined_server), $"{joinedAt?.ToString("dd.MM.yyyy HH:mm") ?? "?"}", true) - .AddField(GetText(strs.joined_discord), $"{user.CreatedAt:dd.MM.yyyy HH:mm}", true) - .AddField(GetText(strs.roles), - $"**({user.RoleIds.Count - 1})** - {string.Join("\n", user.GetRoles().Take(10).Where(r => r.Id != r.Guild.EveryoneRole.Id).Select(r => r.Name)).SanitizeMentions(true)}", - true) - .WithOkColor(); + .AddField(GetText(strs.joined_server), $"{joinedAt?.ToString("dd.MM.yyyy HH:mm") ?? "?"}", true) + .AddField(GetText(strs.joined_discord), $"{user.CreatedAt:dd.MM.yyyy HH:mm}", true) + .AddField(GetText(strs.roles), + $"**({user.RoleIds.Count - 1})** - {string.Join("\n", user.GetRoles().Take(10).Where(r => r.Id != r.Guild.EveryoneRole.Id).Select(r => r.Name)).SanitizeMentions(true)}", + true) + .WithOkColor(); var mPatron = await _ps.GetPatronAsync(user.Id); - if (mPatron is {} patron && patron.Tier != PatronTier.None) + if (mPatron is { } patron && patron.Tier != PatronTier.None) { - embed.WithFooter(patron.Tier switch + embed.WithFooter((int)patron.Tier switch { - PatronTier.V => "❤️❤️", - PatronTier.X => "❤️❤️❤️", - PatronTier.XX => "❤️❤️❤️❤️", - PatronTier.L => "❤️❤️❤️❤️❤️", - _ => "❤️", + < (int)PatronTier.X => "❤️", + < (int)PatronTier.L => "❤️❤️❤️", + _ => "❤️❤️❤️❤️❤️", }); } @@ -166,15 +167,6 @@ public partial class Utility } private DateTimeOffset? GetJoinedAt(IGuildUser user) - { - var joinedAt = user.JoinedAt; - if (user.GuildId != 117523346618318850) - return joinedAt; - - if (user.Id == 351244576092192778) - return new DateTimeOffset(2019, 12, 25, 9, 33, 0, TimeSpan.Zero); - - return joinedAt; - } + => user.JoinedAt; } } \ No newline at end of file diff --git a/src/EllieBot/Modules/Xp/Club/ClubService.cs b/src/EllieBot/Modules/Xp/Club/ClubService.cs index dad45ba..60c4505 100644 --- a/src/EllieBot/Modules/Xp/Club/ClubService.cs +++ b/src/EllieBot/Modules/Xp/Club/ClubService.cs @@ -26,10 +26,6 @@ public class ClubService : IEService, IClubService await using var uow = _db.GetDbContext(); var du = uow.GetOrCreateUser(user); - var xp = new LevelStats(du.TotalXp); - - if (xp.Level < 5) - return ClubCreateResult.InsufficientLevel; if (du.ClubId is not null) return ClubCreateResult.AlreadyInAClub; diff --git a/src/EllieBot/Modules/Xp/XpService.cs b/src/EllieBot/Modules/Xp/XpService.cs index a503632..5b0b6b5 100644 --- a/src/EllieBot/Modules/Xp/XpService.cs +++ b/src/EllieBot/Modules/Xp/XpService.cs @@ -3,7 +3,6 @@ using LinqToDB; using Microsoft.EntityFrameworkCore; using EllieBot.Common.ModuleBehaviors; using EllieBot.Db.Models; -using Newtonsoft.Json; using SixLabors.Fonts; using SixLabors.ImageSharp; using SixLabors.ImageSharp.Drawing.Processing; @@ -600,17 +599,13 @@ public class XpService : IEService, IReadyExecutor, IExecNoCommand { await using var uow = _db.GetDbContext(); var du = uow.GetOrCreateUser(user, set => set.Include(x => x.Club)); - var totalXp = du.TotalXp; - var globalRank = uow.Set<DiscordUser>().GetUserGlobalRank(user.Id); var guildRank = await uow.Set<UserXpStats>().GetUserGuildRanking(user.Id, user.GuildId); var stats = uow.GetOrCreateUserXpStats(user.GuildId, user.Id); await uow.SaveChangesAsync(); return new(du, stats, - new(totalXp), new(stats.Xp), - globalRank, guildRank); } @@ -620,7 +615,6 @@ public class XpService : IEService, IReadyExecutor, IExecNoCommand return await GenerateXpImageAsync(stats); } - public Task<(Stream Image, IImageFormat Format)> GenerateXpImageAsync(FullUserStats stats) => Task.Run(async () => { @@ -662,8 +656,6 @@ public class XpService : IEService, IReadyExecutor, IExecNoCommand } } - var outlinePen = new SolidPen(Color.Black, 1f); - using var img = Image.Load<Rgba32>(bgBytes); if (template.User.Name.Show) @@ -687,8 +679,7 @@ public class XpService : IEService, IReadyExecutor, IExecNoCommand Origin = new(template.User.Name.Pos.X, template.User.Name.Pos.Y + 8) }, "@" + username, - Brushes.Solid(template.User.Name.Color), - outlinePen); + Brushes.Solid(template.User.Name.Color)); //club name @@ -707,8 +698,7 @@ public class XpService : IEService, IReadyExecutor, IExecNoCommand Origin = new(template.Club.Name.Pos.X + 50, template.Club.Name.Pos.Y - 8) }, clubName, - Brushes.Solid(template.Club.Name.Color), - outlinePen); + Brushes.Solid(template.Club.Name.Color)); } Font GetTruncatedFont( @@ -728,68 +718,32 @@ public class XpService : IEService, IReadyExecutor, IExecNoCommand } - if (template.User.GlobalLevel.Show) - { - // up to 83 width - - var globalLevelFont = GetTruncatedFont( - _fonts.NotoSans, - template.User.GlobalLevel.FontSize, - FontStyle.Bold, - stats.Global.Level.ToString(), - 75); - - - x.DrawText(stats.Global.Level.ToString(), - globalLevelFont, - template.User.GlobalLevel.Color, - new(template.User.GlobalLevel.Pos.X, template.User.GlobalLevel.Pos.Y)); //level - } - - if (template.User.GuildLevel.Show) + if (template.User.Level.Show) { var guildLevelFont = GetTruncatedFont( _fonts.NotoSans, - template.User.GuildLevel.FontSize, + template.User.Level.FontSize, FontStyle.Bold, stats.Guild.Level.ToString(), - 75); + 33); x.DrawText(stats.Guild.Level.ToString(), guildLevelFont, - template.User.GuildLevel.Color, - new(template.User.GuildLevel.Pos.X, template.User.GuildLevel.Pos.Y)); + template.User.Level.Color, + new(template.User.Level.Pos.X, template.User.Level.Pos.Y)); } - var global = stats.Global; var guild = stats.Guild; //xp bar if (template.User.Xp.Bar.Show) { - var xpPercent = global.LevelXp / (float)global.RequiredXp; - DrawXpBar(xpPercent, template.User.Xp.Bar.Global, img); - xpPercent = guild.LevelXp / (float)guild.RequiredXp; + var xpPercent = guild.LevelXp / (float)guild.RequiredXp; DrawXpBar(xpPercent, template.User.Xp.Bar.Guild, img); } - if (template.User.Xp.Global.Show) - { - x.DrawText( - new RichTextOptions(_fonts.NotoSans.CreateFont(template.User.Xp.Global.FontSize, - FontStyle.Bold)) - { - HorizontalAlignment = HorizontalAlignment.Center, - VerticalAlignment = VerticalAlignment.Center, - Origin = new(template.User.Xp.Global.Pos.X, template.User.Xp.Global.Pos.Y), - }, - $"{global.LevelXp}/{global.RequiredXp}", - Brushes.Solid(template.User.Xp.Global.Color), - outlinePen); - } - if (template.User.Xp.Guild.Show) { x.DrawText( @@ -801,52 +755,30 @@ public class XpService : IEService, IReadyExecutor, IExecNoCommand Origin = new(template.User.Xp.Guild.Pos.X, template.User.Xp.Guild.Pos.Y) }, $"{guild.LevelXp}/{guild.RequiredXp}", - Brushes.Solid(template.User.Xp.Guild.Color), - outlinePen); + Brushes.Solid(template.User.Xp.Guild.Color)); } var rankPen = new SolidPen(Color.White, 1); //ranking - if (template.User.GlobalRank.Show) - { - var globalRankStr = stats.GlobalRanking.ToString(); - var globalRankFont = GetTruncatedFont( - _fonts.UniSans, - template.User.GlobalRank.FontSize, - FontStyle.Bold, - globalRankStr, - 68); - - x.DrawText( - new RichTextOptions(globalRankFont) - { - Origin = new(template.User.GlobalRank.Pos.X, template.User.GlobalRank.Pos.Y) - }, - globalRankStr, - Brushes.Solid(template.User.GlobalRank.Color), - rankPen - ); - } - - if (template.User.GuildRank.Show) + if (template.User.Rank.Show) { var guildRankStr = stats.GuildRanking.ToString(); var guildRankFont = GetTruncatedFont( - _fonts.UniSans, - template.User.GuildRank.FontSize, + _fonts.NotoSans, + template.User.Rank.FontSize, FontStyle.Bold, guildRankStr, - 43); + 22); x.DrawText( new RichTextOptions(guildRankFont) { - Origin = new(template.User.GuildRank.Pos.X, template.User.GuildRank.Pos.Y) + Origin = new(template.User.Rank.Pos.X, template.User.Rank.Pos.Y) }, guildRankStr, - Brushes.Solid(template.User.GuildRank.Color), + Brushes.Solid(template.User.Rank.Color), rankPen ); } @@ -908,19 +840,10 @@ public class XpService : IEService, IReadyExecutor, IExecNoCommand private async Task DrawFrame(Image<Rgba32> img, ulong userId) { - var patron = await _ps.GetPatronAsync(userId); - var item = await GetItemInUse(userId, XpShopItemType.Frame); Image? frame = null; - if (item is null) - { - if (patron?.Tier == PatronTier.V) - frame = Image.Load<Rgba32>(File.OpenRead("data/images/frame_silver.png")); - else if (patron?.Tier >= PatronTier.X || _creds.IsOwner(userId)) - frame = Image.Load<Rgba32>(File.OpenRead("data/images/frame_gold.png")); - } - else + if (item is not null) { var url = _xpConfig.Data.Shop.GetItemUrl(XpShopItemType.Frame, item.ItemKey); if (!string.IsNullOrWhiteSpace(url)) @@ -1207,7 +1130,7 @@ public class XpService : IEService, IReadyExecutor, IExecNoCommand => type switch { Xp.XpShopInputType.F => _xpConfig.Data.Shop.FramesTierRequirement, - _ => _xpConfig.Data.Shop.BgsTierRequirement, + _ => PatronTier.None, }; public bool IsShopEnabled() @@ -1246,64 +1169,6 @@ public class XpService : IEService, IReadyExecutor, IExecNoCommand } } -public sealed class XpTemplateService : IEService, IReadyExecutor -{ - private const string XP_TEMPLATE_PATH = "./data/xp_template.json"; - - private readonly IPubSub _pubSub; - private XpTemplate _template = new(); - private readonly TypedKey<bool> _xpTemplateReloadKey = new("xp.template.reload"); - - public XpTemplateService(IPubSub pubSub) - { - _pubSub = pubSub; - } - - private void InternalReloadXpTemplate() - { - try - { - var settings = new JsonSerializerSettings - { - ContractResolver = new RequireObjectPropertiesContractResolver() - }; - - if (!File.Exists(XP_TEMPLATE_PATH)) - { - var newTemp = new XpTemplate(); - newTemp.Version = 2; - File.WriteAllText(XP_TEMPLATE_PATH, JsonConvert.SerializeObject(newTemp, Formatting.Indented)); - } - - _template = JsonConvert.DeserializeObject<XpTemplate>( - File.ReadAllText(XP_TEMPLATE_PATH), - settings)!; - } - catch (Exception ex) - { - Log.Error(ex, "xp_template.json is invalid. Loaded default values"); - _template = new(); - } - } - - public void ReloadXpTemplate() - => _pubSub.Pub(_xpTemplateReloadKey, true); - - public async Task OnReadyAsync() - { - InternalReloadXpTemplate(); - await _pubSub.Sub(_xpTemplateReloadKey, - _ => - { - InternalReloadXpTemplate(); - return default; - }); - } - - public XpTemplate GetTemplate() - => _template; -} - public readonly record struct XpQueueEntry(IGuildUser User, long Xp) { public bool Equals(XpQueueEntry? other) diff --git a/src/EllieBot/Modules/Xp/XpTemplateService.cs b/src/EllieBot/Modules/Xp/XpTemplateService.cs new file mode 100644 index 0000000..4c8f3a9 --- /dev/null +++ b/src/EllieBot/Modules/Xp/XpTemplateService.cs @@ -0,0 +1,82 @@ +#nullable disable warnings +using EllieBot.Common.ModuleBehaviors; +using Newtonsoft.Json; + +namespace EllieBot.Modules.Xp.Services; + +public sealed class XpTemplateService : IEService, IReadyExecutor +{ + private const string XP_TEMPLATE_PATH = "./data/xp_template.json"; + + private readonly IPubSub _pubSub; + private XpTemplate _template = new(); + private readonly TypedKey<bool> _xpTemplateReloadKey = new("xp.template.reload"); + + public XpTemplateService(IPubSub pubSub) + { + _pubSub = pubSub; + } + + private void InternalReloadXpTemplate() + { + try + { + var settings = new JsonSerializerSettings + { + ContractResolver = new RequireObjectPropertiesContractResolver() + }; + + if (!File.Exists(XP_TEMPLATE_PATH)) + { + var newTemp = new XpTemplate(); + newTemp.Version = 3; + File.WriteAllText(XP_TEMPLATE_PATH, JsonConvert.SerializeObject(newTemp, Formatting.Indented)); + } + + _template = JsonConvert.DeserializeObject<XpTemplate>( + File.ReadAllText(XP_TEMPLATE_PATH), + settings)!; + + if (_template.Version < 3) + { + if (_template.OutputSize is + { + X: 800, + Y: 392 + }) + { + _template.OutputSize = new() + { + X = 500, + Y = 245 + }; + _template.Version = 3; + + File.WriteAllText(XP_TEMPLATE_PATH, JsonConvert.SerializeObject(_template, Formatting.Indented)); + } + } + } + catch (Exception ex) + { + Log.Error(ex, "xp_template.json is invalid. Loaded default values"); + _template = new(); + } + } + + public void ReloadXpTemplate() + => _pubSub.Pub(_xpTemplateReloadKey, true); + + public async Task OnReadyAsync() + { + InternalReloadXpTemplate(); + await _pubSub.Sub(_xpTemplateReloadKey, + _ => + { + InternalReloadXpTemplate(); + return default; + }); + } + + public XpTemplate GetTemplate() + => _template; +} \ No newline at end of file diff --git a/src/EllieBot/Modules/Xp/common/FullUserStats.cs b/src/EllieBot/Modules/Xp/common/FullUserStats.cs index d56a62e..479c5e7 100644 --- a/src/EllieBot/Modules/Xp/common/FullUserStats.cs +++ b/src/EllieBot/Modules/Xp/common/FullUserStats.cs @@ -7,23 +7,17 @@ public class FullUserStats { public DiscordUser User { get; } public UserXpStats FullGuildStats { get; } - public LevelStats Global { get; } public LevelStats Guild { get; } - public int GlobalRanking { get; } public int GuildRanking { get; } public FullUserStats( DiscordUser usr, UserXpStats fullGuildStats, - LevelStats global, LevelStats guild, - int globalRanking, int guildRanking) { User = usr; - Global = global; Guild = guild; - GlobalRanking = globalRanking; GuildRanking = guildRanking; FullGuildStats = fullGuildStats; } diff --git a/src/EllieBot/Modules/Xp/common/XpTemplate.cs b/src/EllieBot/Modules/Xp/common/XpTemplate.cs index 077393f..01a2a5f 100644 --- a/src/EllieBot/Modules/Xp/common/XpTemplate.cs +++ b/src/EllieBot/Modules/Xp/common/XpTemplate.cs @@ -7,25 +7,25 @@ namespace EllieBot.Modules.Xp; public class XpTemplate { - public int Version { get; set; } = 2; + public int Version { get; set; } = 3; [JsonProperty("output_size")] public XpTemplatePos OutputSize { get; set; } = new() { - X = 800, - Y = 392 + X = 500, + Y = 245 }; public XpTemplateUser User { get; set; } = new() { Name = new() { - FontSize = 50, + FontSize = 25, Show = true, Pos = new() { - X = 130, - Y = 17 + X = 65, + Y = 8 } }, Icon = new() @@ -33,53 +33,33 @@ public class XpTemplate Show = true, Pos = new() { - X = 14, - Y = 14 + X = 11, + Y = 11 }, Size = new() { - X = 72, - Y = 71 + X = 38, + Y = 38 } }, - GuildLevel = new() + Level = new() { Show = true, - FontSize = 45, + FontSize = 22, Pos = new() { - X = 47, - Y = 308 + X = 35, + Y = 101 } }, - GlobalLevel = new() + Rank = new() { Show = true, - FontSize = 45, + FontSize = 20, Pos = new() { - X = 47, - Y = 160 - } - }, - GuildRank = new() - { - Show = true, - FontSize = 30, - Pos = new() - { - X = 148, - Y = 326 - } - }, - GlobalRank = new() - { - Show = true, - FontSize = 30, - Pos = new() - { - X = 148, - Y = 179 + X = 100, + Y = 115 } }, Xp = new() @@ -87,67 +67,31 @@ public class XpTemplate Bar = new() { Show = true, - Global = new() - { - Direction = XpTemplateDirection.Right, - Length = 450, - Color = new(0, 0, 0, 0.4f), - PointA = new() - { - X = 321, - Y = 104 - }, - PointB = new() - { - X = 286, - Y = 235 - } - }, Guild = new() { Direction = XpTemplateDirection.Right, - Length = 450, + Length = 225, Color = new(0, 0, 0, 0.4f), PointA = new() { - X = 282, - Y = 248 + X = 202, + Y = 66 }, PointB = new() { - X = 247, - Y = 379 + X = 180, + Y = 145 } } }, - Global = new() - { - Show = true, - FontSize = 50, - Pos = new() - { - X = 528, - Y = 170 - } - }, Guild = new() - { - Show = true, - FontSize = 50, - Pos = new() - { - X = 490, - Y = 313 - } - }, - Awarded = new() { Show = true, FontSize = 25, Pos = new() { - X = 490, - Y = 345 + X = 330, + Y = 104 } } } @@ -160,22 +104,22 @@ public class XpTemplate Show = true, Pos = new() { - X = 722, - Y = 25 + X = 451, + Y = 15 }, Size = new() { - X = 45, - Y = 45 + X = 29, + Y = 29 } }, Name = new() { - FontSize = 35, + FontSize = 20, Pos = new() { - X = 650, - Y = 49 + X = 394, + Y = 35 }, Show = true } @@ -199,10 +143,8 @@ public class XpTemplateUser { public XpTemplateText Name { get; set; } public XpTemplateIcon Icon { get; set; } - public XpTemplateText GlobalLevel { get; set; } - public XpTemplateText GuildLevel { get; set; } - public XpTemplateText GlobalRank { get; set; } - public XpTemplateText GuildRank { get; set; } + public XpTemplateText Level { get; set; } + public XpTemplateText Rank { get; set; } public XpTemplateXp Xp { get; set; } } @@ -225,15 +167,12 @@ public class XpTemplateText public class XpTemplateXp { public XpTemplateXpBar Bar { get; set; } - public XpTemplateText Global { get; set; } public XpTemplateText Guild { get; set; } - public XpTemplateText Awarded { get; set; } } public class XpTemplateXpBar { public bool Show { get; set; } - public XpBar Global { get; set; } public XpBar Guild { get; set; } } diff --git a/src/EllieBot/_common/Patronage/PatronTier.cs b/src/EllieBot/_common/Patronage/PatronTier.cs index 0bbe804..a285fec 100644 --- a/src/EllieBot/_common/Patronage/PatronTier.cs +++ b/src/EllieBot/_common/Patronage/PatronTier.cs @@ -5,10 +5,7 @@ public enum PatronTier { None, I, - V, X, - XX, L, - C, - ComingSoon + C } \ No newline at end of file diff --git a/src/EllieBot/_common/Services/Impl/FontProvider.cs b/src/EllieBot/_common/Services/Impl/FontProvider.cs index 2bead90..e5d51b5 100644 --- a/src/EllieBot/_common/Services/Impl/FontProvider.cs +++ b/src/EllieBot/_common/Services/Impl/FontProvider.cs @@ -5,13 +5,7 @@ namespace EllieBot.Services; public class FontProvider : IEService { - public FontFamily DottyFont { get; } - - public FontFamily UniSans { get; } - public FontFamily NotoSans { get; } - //public FontFamily Emojis { get; } - public List<FontFamily> FallBackFonts { get; } private readonly FontCollection _fonts; @@ -20,12 +14,9 @@ public class FontProvider : IEService _fonts = new(); NotoSans = _fonts.Add("data/fonts/NotoSans-Bold.ttf"); - UniSans = _fonts.Add("data/fonts/Uni Sans.ttf"); FallBackFonts = new(); - //FallBackFonts.Add(_fonts.Install("data/fonts/OpenSansEmoji.ttf")); - // try loading some emoji and jap fonts on windows as fallback fonts if (Environment.OSVersion.Platform == PlatformID.Win32NT) { @@ -48,7 +39,5 @@ public class FontProvider : IEService else if (font.EndsWith(".ttc")) FallBackFonts.AddRange(_fonts.AddCollection(font)); } - - DottyFont = FallBackFonts.First(x => x.Name == "dotty"); } } \ No newline at end of file diff --git a/src/EllieBot/_common/Services/Impl/ImagesConfig.cs b/src/EllieBot/_common/Services/Impl/ImagesConfig.cs index c36c20a..ce24072 100644 --- a/src/EllieBot/_common/Services/Impl/ImagesConfig.cs +++ b/src/EllieBot/_common/Services/Impl/ImagesConfig.cs @@ -8,7 +8,7 @@ public sealed class ImagesConfig : ConfigServiceBase<ImageUrls> private static readonly TypedKey<ImageUrls> _changeKey = new("config.images.updated"); - + public override string Name => "images"; @@ -20,28 +20,13 @@ public sealed class ImagesConfig : ConfigServiceBase<ImageUrls> private void Migrate() { - if (data.Version < 5) + if (data.Version < 10) { ModifyConfig(c => { - c.Version = 5; - }); - } - - if (data.Version < 6) - { - ModifyConfig(c => - { - if (c.Slots.Emojis?.Length == 6) - { - c.Slots.Emojis = - [ - new("https://cdn.nadeko.bot/slots/15.png"), - ..c.Slots.Emojis - ]; - } - - c.Version = 6; + if (c.Xp.Bg.ToString().Contains("cdn.nadeko.bot")) + c.Xp.Bg = new("https://cdn.nadeko.bot/xp/bgs/v6.png"); + c.Version = 10; }); } } diff --git a/src/EllieBot/_common/_Extensions/DbExtensions.cs b/src/EllieBot/_common/_Extensions/DbExtensions.cs index 0975a1f..44aec5f 100644 --- a/src/EllieBot/_common/_Extensions/DbExtensions.cs +++ b/src/EllieBot/_common/_Extensions/DbExtensions.cs @@ -6,5 +6,5 @@ namespace EllieBot.Extensions; public static class DbExtensions { public static DiscordUser GetOrCreateUser(this DbContext ctx, IUser original, Func<IQueryable<DiscordUser>, IQueryable<DiscordUser>>? includes = null) - => ctx.GetOrCreateUser(original.Id, original.Username, original.Discriminator, original.AvatarId, includes); + => ctx.GetOrCreateUser(original.Id, original.Username, original.AvatarId, includes); } \ No newline at end of file diff --git a/src/EllieBot/data/fonts/Uni Sans.ttf b/src/EllieBot/data/fonts/Uni Sans.ttf deleted file mode 100644 index a7b39d02e5e7a21622648839874e4277332031d1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 50856 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 diff --git a/src/EllieBot/data/fonts/dotty.ttf b/src/EllieBot/data/fonts/dotty.ttf deleted file mode 100644 index 4ce2814cf7fbf593ad923ea52f162c408315dc42..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51848 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 diff --git a/src/EllieBot/data/images.yml b/src/EllieBot/data/images.yml index d3f3d77..6270858 100644 --- a/src/EllieBot/data/images.yml +++ b/src/EllieBot/data/images.yml @@ -1,5 +1,5 @@ # DO NOT CHANGE -version: 6 +version: 10 coins: heads: - https://cdn.nadeko.bot/coins/heads3.png @@ -21,7 +21,7 @@ dice: - https://cdn.nadeko.bot/other/dice/8.png - https://cdn.nadeko.bot/other/dice/9.png xp: - bg: https://cdn.nadeko.bot/other/xp/bg_k.png + bg: https://cdn.nadeko.bot/xp/bgs/v6.png slots: emojis: - https://cdn.nadeko.bot/slots/10.png diff --git a/src/EllieBot/data/images/frame_gold.png b/src/EllieBot/data/images/frame_gold.png deleted file mode 100644 index 860129c5a6af79f5762ad9b346de210ee8186e0f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 49859 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 diff --git a/src/EllieBot/data/images/frame_silver.png b/src/EllieBot/data/images/frame_silver.png deleted file mode 100644 index 4dcda7562f57785c3ded15e513ba66387a00d87a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13319 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 diff --git a/src/EllieBot/data/xp_template.json b/src/EllieBot/data/xp_template.json index 5ebe91b..e86598f 100644 --- a/src/EllieBot/data/xp_template.json +++ b/src/EllieBot/data/xp_template.json @@ -1,8 +1,8 @@ { - "Version": 2, + "Version": 3, "output_size": { - "X": 800, - "Y": 392 + "X": 500, + "Y": 245 }, "User": { "Name": { @@ -25,58 +25,27 @@ "Y": 71 } }, - "GlobalLevel": { + "Level": { "Color": "ffffffff", "Show": true, - "FontSize": 45, + "FontSize": 22, "Pos": { - "X": 47, - "Y": 160 + "X": 35, + "Y": 101 } }, - "GuildLevel": { + "Rank": { "Color": "ffffffff", "Show": true, - "FontSize": 45, + "FontSize": 20, "Pos": { - "X": 47, - "Y": 308 - } - }, - "GlobalRank": { - "Color": "ffffffff", - "Show": true, - "FontSize": 30, - "Pos": { - "X": 148, - "Y": 179 - } - }, - "GuildRank": { - "Color": "ffffffff", - "Show": true, - "FontSize": 30, - "Pos": { - "X": 148, - "Y": 326 + "X": 100, + "Y": 115 } }, "Xp": { "Bar": { "Show": true, - "Global": { - "Color": "00000095", - "PointA": { - "X": 321, - "Y": 104 - }, - "PointB": { - "X": 286, - "Y": 235 - }, - "Length": 450, - "Direction": 3 - }, "Guild": { "Color": "00000095", "PointA": { @@ -91,15 +60,6 @@ "Direction": 3 } }, - "Global": { - "Color": "ffffffff", - "Show": true, - "FontSize": 50, - "Pos": { - "X": 528, - "Y": 170 - } - }, "Guild": { "Color": "ffffffff", "Show": true, @@ -108,15 +68,6 @@ "X": 490, "Y": 313 } - }, - "Awarded": { - "Color": "ffffffff", - "Show": true, - "FontSize": 25, - "Pos": { - "X": 450, - "Y": 345 - } } } },