Compare commits

..

90 commits

Author SHA1 Message Date
renovate[bot]
1bce237244
chore(deps): update dependency genhttp.modules.staticwebsites to 9.8.0 2025-07-09 16:28:49 +00:00
Mira
5901c9a13d
fix: im tired 2025-05-07 20:19:10 +02:00
Mira
4cb76d7a9d
fix: nre 2025-05-07 20:18:39 +02:00
Mira
4f0bc4f6ad
fix: fix minor issues 2025-05-07 20:15:26 +02:00
Mira
50c60bf0da
feat: User Count Channel 2025-05-07 19:49:03 +02:00
Mira
1c3aa23a76
fix: Delete old deleted message logs
(they stay uploaded to discord)
2025-05-07 18:48:06 +02:00
Mira
7698e14c3e
fix: build now? 2025-05-07 00:45:28 +02:00
Mira
254375e71d
fix: Update quickchart-csharp 2025-05-07 00:36:00 +02:00
Mira
833b1c79f9
chore: Update deps 2025-05-07 00:16:37 +02:00
Mira
bbb9935205
fix: Fix duplicate sync task calls on startup 2025-05-07 00:14:50 +02:00
Mira
6f1155c8c4
chore: Disable dcs updates 2025-04-07 21:38:46 +02:00
Mira
2e73d66dc2
refactor: Downgrade to stable & use AddEmbed over WithEmbed 2025-04-07 21:36:42 +02:00
Mira
4705cb5f26
chore: Update deps 2025-04-01 17:39:14 +02:00
Mira
e58aca5af7
fix: fix missing CompiledCommands check 2025-04-01 17:37:56 +02:00
Lala Sabathil
b7d814936f
chore(deps): update dotnet monorepo to 9.0.3 (#558)
This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [System.Drawing.Common](https://redirect.github.com/dotnet/winforms) |
`9.0.2` -> `9.0.3` |
[![age](https://developer.mend.io/api/mc/badges/age/nuget/System.Drawing.Common/9.0.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/nuget/System.Drawing.Common/9.0.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/nuget/System.Drawing.Common/9.0.2/9.0.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/nuget/System.Drawing.Common/9.0.2/9.0.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
| [System.Text.Json](https://dot.net/)
([source](https://redirect.github.com/dotnet/runtime)) | `9.0.2` ->
`9.0.3` |
[![age](https://developer.mend.io/api/mc/badges/age/nuget/System.Text.Json/9.0.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/nuget/System.Text.Json/9.0.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/nuget/System.Text.Json/9.0.2/9.0.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/nuget/System.Text.Json/9.0.2/9.0.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

<details>
<summary>dotnet/winforms (System.Drawing.Common)</summary>

###
[`v9.0.3`](https://redirect.github.com/dotnet/winforms/releases/tag/v9.0.3):
.NET 9.0.3

[Release](https://redirect.github.com/dotnet/core/releases/tag/v9.0.3)

##### What's Changed

- Don't unwrap wrapped DataObject inner data store
([#&#8203;12800](https://redirect.github.com/dotnet/winforms/issues/12800))
by [@&#8203;JeremyKuhne](https://redirect.github.com/JeremyKuhne) in
[https://github.com/dotnet/winforms/pull/12806](https://redirect.github.com/dotnet/winforms/pull/12806)
- \[release/9.0] Update dependencies from dotnet/arcade by
[@&#8203;dotnet-maestro](https://redirect.github.com/dotnet-maestro) in
[https://github.com/dotnet/winforms/pull/12854](https://redirect.github.com/dotnet/winforms/pull/12854)
- Update branding to 9.0.3 by
[@&#8203;vseanreesermsft](https://redirect.github.com/vseanreesermsft)
in
[https://github.com/dotnet/winforms/pull/12875](https://redirect.github.com/dotnet/winforms/pull/12875)
- \[release/9.0] WinForms ComboBox border and drop down button are not
visible sometimes by
[@&#8203;ricardobossan](https://redirect.github.com/ricardobossan) in
[https://github.com/dotnet/winforms/pull/12785](https://redirect.github.com/dotnet/winforms/pull/12785)
- \[release/9.0] Update dependencies from dotnet/arcade by
[@&#8203;dotnet-maestro](https://redirect.github.com/dotnet-maestro) in
[https://github.com/dotnet/winforms/pull/12924](https://redirect.github.com/dotnet/winforms/pull/12924)

**Full Changelog**:
https://github.com/dotnet/winforms/compare/v9.0.2...v9.0.3

</details>

<details>
<summary>dotnet/runtime (System.Text.Json)</summary>

###
[`v9.0.3`](https://redirect.github.com/dotnet/runtime/releases/tag/v9.0.3):
.NET 9.0.3

[Release](https://redirect.github.com/dotnet/core/releases/tag/v9.0.3)

#### What's Changed

- \[release/9.0-staging] Fix wrong alias-to for tvos AOT packs in net8
workload manifest by
[@&#8203;akoeplinger](https://redirect.github.com/akoeplinger) in
[https://github.com/dotnet/runtime/pull/110871](https://redirect.github.com/dotnet/runtime/pull/110871)
- \[release/9.0] Disable tests targetting
http://corefx-net-http11.azurewebsites.net by
[@&#8203;rzikm](https://redirect.github.com/rzikm) in
[https://github.com/dotnet/runtime/pull/111402](https://redirect.github.com/dotnet/runtime/pull/111402)
- \[release/9.0-staging] Support generic fields in
PersistedAssemblyBuilder by
[@&#8203;github-actions](https://redirect.github.com/github-actions) in
[https://github.com/dotnet/runtime/pull/110839](https://redirect.github.com/dotnet/runtime/pull/110839)
- \[release/9.0-staging] Re-enable skiasharp WBT tests
([#&#8203;109232](https://redirect.github.com/dotnet/runtime/issues/109232))
by [@&#8203;radekdoulik](https://redirect.github.com/radekdoulik) in
[https://github.com/dotnet/runtime/pull/110734](https://redirect.github.com/dotnet/runtime/pull/110734)
- \[release/9.0-staging] Backport test fixes related to BinaryFormatter
removal by [@&#8203;adamsitnik](https://redirect.github.com/adamsitnik)
in
[https://github.com/dotnet/runtime/pull/111508](https://redirect.github.com/dotnet/runtime/pull/111508)
- \[manual] Merge branch 'release/9.0' => 'release/9.0-staging' by
[@&#8203;carlossanlop](https://redirect.github.com/carlossanlop) in
[https://github.com/dotnet/runtime/pull/111565](https://redirect.github.com/dotnet/runtime/pull/111565)
- \[release/9.0] \[wasi] Disable build in .NET 9 by
[@&#8203;maraf](https://redirect.github.com/maraf) in
[https://github.com/dotnet/runtime/pull/108877](https://redirect.github.com/dotnet/runtime/pull/108877)
- \[release/9.0-staging] \[mono] Disable UnitTest_GVM_TypeLoadException
for fullAOT jobs by
[@&#8203;github-actions](https://redirect.github.com/github-actions) in
[https://github.com/dotnet/runtime/pull/111394](https://redirect.github.com/dotnet/runtime/pull/111394)
- \[release/9.0-staging] Fix UnsafeAccessor scenario for modopts/modreqs
when comparing field sigs. by
[@&#8203;AaronRobinsonMSFT](https://redirect.github.com/AaronRobinsonMSFT)
in
[https://github.com/dotnet/runtime/pull/111675](https://redirect.github.com/dotnet/runtime/pull/111675)
- \[release/9.0-staging] \[mono] Run runtime-llvm and runtime-ioslike on
Mono LLVM PRs by
[@&#8203;github-actions](https://redirect.github.com/github-actions) in
[https://github.com/dotnet/runtime/pull/111739](https://redirect.github.com/dotnet/runtime/pull/111739)
- \[release/9.0-staging] fix stack 2x2 tensor along dimension 1 by
[@&#8203;github-actions](https://redirect.github.com/github-actions) in
[https://github.com/dotnet/runtime/pull/110053](https://redirect.github.com/dotnet/runtime/pull/110053)
- \[release/9.0-staging] Fix race condition in cleanup of collectible
thread static variables by
[@&#8203;github-actions](https://redirect.github.com/github-actions) in
[https://github.com/dotnet/runtime/pull/111275](https://redirect.github.com/dotnet/runtime/pull/111275)
- \[release/9.0-staging] \[iOS] Retrieve device locale in full
(specific) format from ObjectiveC APIs by
[@&#8203;github-actions](https://redirect.github.com/github-actions) in
[https://github.com/dotnet/runtime/pull/111612](https://redirect.github.com/dotnet/runtime/pull/111612)
- \[release/9.0-staging] Add workflow to prevent merging a PR when the
`NO-MERGE` label is applied by
[@&#8203;github-actions](https://redirect.github.com/github-actions) in
[https://github.com/dotnet/runtime/pull/111961](https://redirect.github.com/dotnet/runtime/pull/111961)
- \[release/9.0-staging] Use alternative format string specifier to
ensure decimal point is present by
[@&#8203;github-actions](https://redirect.github.com/github-actions) in
[https://github.com/dotnet/runtime/pull/111444](https://redirect.github.com/dotnet/runtime/pull/111444)
- \[release/9.0-staging] Fixed android build with NDK 23 by
[@&#8203;jkurdek](https://redirect.github.com/jkurdek) in
[https://github.com/dotnet/runtime/pull/111696](https://redirect.github.com/dotnet/runtime/pull/111696)
- \[release/9.0-staging] Fix UNC paths by
[@&#8203;github-actions](https://redirect.github.com/github-actions) in
[https://github.com/dotnet/runtime/pull/111499](https://redirect.github.com/dotnet/runtime/pull/111499)
- \[release/9.0-staging] \[mono] \[llvm-aot] Fixed storing Vector3 into
memory by
[@&#8203;github-actions](https://redirect.github.com/github-actions) in
[https://github.com/dotnet/runtime/pull/111069](https://redirect.github.com/dotnet/runtime/pull/111069)
- \[release/9.0] Remove explicit \__compact_unwind entries from x64
assembler by
[@&#8203;filipnavara](https://redirect.github.com/filipnavara) in
[https://github.com/dotnet/runtime/pull/112204](https://redirect.github.com/dotnet/runtime/pull/112204)
- Update branding to 9.0.3 by
[@&#8203;vseanreesermsft](https://redirect.github.com/vseanreesermsft)
in
[https://github.com/dotnet/runtime/pull/112144](https://redirect.github.com/dotnet/runtime/pull/112144)
- \[release/9.0-staging] Update dependencies from dotnet/xharness by
[@&#8203;dotnet-maestro](https://redirect.github.com/dotnet-maestro) in
[https://github.com/dotnet/runtime/pull/111606](https://redirect.github.com/dotnet/runtime/pull/111606)
- \[release/9.0] Update dependencies from dotnet/emsdk by
[@&#8203;dotnet-maestro](https://redirect.github.com/dotnet-maestro) in
[https://github.com/dotnet/runtime/pull/111891](https://redirect.github.com/dotnet/runtime/pull/111891)
- \[release/9.0] Update dependencies from dotnet/emsdk by
[@&#8203;dotnet-maestro](https://redirect.github.com/dotnet-maestro) in
[https://github.com/dotnet/runtime/pull/112189](https://redirect.github.com/dotnet/runtime/pull/112189)
- \[release/9.0-staging] Update dependencies from dotnet/icu by
[@&#8203;dotnet-maestro](https://redirect.github.com/dotnet-maestro) in
[https://github.com/dotnet/runtime/pull/111519](https://redirect.github.com/dotnet/runtime/pull/111519)
- \[release/9.0-staging] Update dependencies from dotnet/icu by
[@&#8203;dotnet-maestro](https://redirect.github.com/dotnet-maestro) in
[https://github.com/dotnet/runtime/pull/112121](https://redirect.github.com/dotnet/runtime/pull/112121)
- \[release/9.0-staging] Update dependencies from dotnet/runtime-assets
by [@&#8203;dotnet-maestro](https://redirect.github.com/dotnet-maestro)
in
[https://github.com/dotnet/runtime/pull/111737](https://redirect.github.com/dotnet/runtime/pull/111737)
- \[release/9.0-staging] Fix shimmed implementation of
TryGetHashAndReset to handle HMAC. by
[@&#8203;github-actions](https://redirect.github.com/github-actions) in
[https://github.com/dotnet/runtime/pull/112015](https://redirect.github.com/dotnet/runtime/pull/112015)
- Remove Windows 8.1 from test queues by
[@&#8203;agocke](https://redirect.github.com/agocke) in
[https://github.com/dotnet/runtime/pull/112056](https://redirect.github.com/dotnet/runtime/pull/112056)
- \[release/9.0-staging] Update dependencies from
dotnet/source-build-reference-packages by
[@&#8203;dotnet-maestro](https://redirect.github.com/dotnet-maestro) in
[https://github.com/dotnet/runtime/pull/111603](https://redirect.github.com/dotnet/runtime/pull/111603)
- \[browser] Remove experimental args from NodeJS WBT runner by
[@&#8203;maraf](https://redirect.github.com/maraf) in
[https://github.com/dotnet/runtime/pull/111655](https://redirect.github.com/dotnet/runtime/pull/111655)
- \[release/9.0-staging] Update dependencies from dotnet/sdk by
[@&#8203;dotnet-maestro](https://redirect.github.com/dotnet-maestro) in
[https://github.com/dotnet/runtime/pull/111607](https://redirect.github.com/dotnet/runtime/pull/111607)
- \[release/9.0-staging] Update dependencies from
dotnet/roslyn-analyzers by
[@&#8203;dotnet-maestro](https://redirect.github.com/dotnet-maestro) in
[https://github.com/dotnet/runtime/pull/111826](https://redirect.github.com/dotnet/runtime/pull/111826)
- \[release/9.0-staging] Update dependencies from dotnet/hotreload-utils
by [@&#8203;dotnet-maestro](https://redirect.github.com/dotnet-maestro)
in
[https://github.com/dotnet/runtime/pull/111885](https://redirect.github.com/dotnet/runtime/pull/111885)
- \[release/9.0-staging] Update dependencies from dotnet/cecil by
[@&#8203;dotnet-maestro](https://redirect.github.com/dotnet-maestro) in
[https://github.com/dotnet/runtime/pull/112122](https://redirect.github.com/dotnet/runtime/pull/112122)
- \[release/9.0-staging] Update dependencies from dotnet/roslyn by
[@&#8203;dotnet-maestro](https://redirect.github.com/dotnet-maestro) in
[https://github.com/dotnet/runtime/pull/112225](https://redirect.github.com/dotnet/runtime/pull/112225)
- \[release/9.0-staging] Update dependencies from dotnet/icu by
[@&#8203;dotnet-maestro](https://redirect.github.com/dotnet-maestro) in
[https://github.com/dotnet/runtime/pull/112261](https://redirect.github.com/dotnet/runtime/pull/112261)
- \[automated] Merge branch 'release/9.0' => 'release/9.0-staging' by
[@&#8203;github-actions](https://redirect.github.com/github-actions) in
[https://github.com/dotnet/runtime/pull/112219](https://redirect.github.com/dotnet/runtime/pull/112219)
- \[release/9.0-staging] Update dependencies from dotnet/xharness by
[@&#8203;dotnet-maestro](https://redirect.github.com/dotnet-maestro) in
[https://github.com/dotnet/runtime/pull/112340](https://redirect.github.com/dotnet/runtime/pull/112340)
- \[release/9.0-staging] Update dependencies from dotnet/arcade by
[@&#8203;dotnet-maestro](https://redirect.github.com/dotnet-maestro) in
[https://github.com/dotnet/runtime/pull/111483](https://redirect.github.com/dotnet/runtime/pull/111483)
- Backport pr 111723 to 9.0 staging by
[@&#8203;StephenMolloy](https://redirect.github.com/StephenMolloy) in
[https://github.com/dotnet/runtime/pull/112322](https://redirect.github.com/dotnet/runtime/pull/112322)
- \[manual] Merge release/9.0-staging into release/9.0 by
[@&#8203;carlossanlop](https://redirect.github.com/carlossanlop) in
[https://github.com/dotnet/runtime/pull/112382](https://redirect.github.com/dotnet/runtime/pull/112382)
- \[9.0] Backport labeling workflow changes by
[@&#8203;carlossanlop](https://redirect.github.com/carlossanlop) in
[https://github.com/dotnet/runtime/pull/112240](https://redirect.github.com/dotnet/runtime/pull/112240)
- \[9.0] Move release/9.0 localization back to main too by
[@&#8203;carlossanlop](https://redirect.github.com/carlossanlop) in
[https://github.com/dotnet/runtime/pull/112443](https://redirect.github.com/dotnet/runtime/pull/112443)
- Merging internal commits for release/9.0 by
[@&#8203;vseanreesermsft](https://redirect.github.com/vseanreesermsft)
in
[https://github.com/dotnet/runtime/pull/112453](https://redirect.github.com/dotnet/runtime/pull/112453)

**Full Changelog**:
https://github.com/dotnet/runtime/compare/v9.0.2...v9.0.3

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about these
updates again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/Fortunevale/ProjectMakoto).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4xOTQuMSIsInVwZGF0ZWRJblZlciI6IjM5LjE5NC4xIiwidGFyZ2V0QnJhbmNoIjoiZGV2IiwibGFiZWxzIjpbXX0=-->
2025-03-15 15:21:24 +01:00
Lala Sabathil
5d0478bf79
chore(deps): update dependencies/discatsharp digest to ab69b24 (#557)
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| Dependencies/DisCatSharp | digest | `20adeb0` -> `ab69b24` |

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/Fortunevale/ProjectMakoto).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4xODUuNCIsInVwZGF0ZWRJblZlciI6IjM5LjIwMC4wIiwidGFyZ2V0QnJhbmNoIjoiZGV2IiwibGFiZWxzIjpbXX0=-->
2025-03-15 15:21:11 +01:00
renovate[bot]
d22aecdf79
chore(deps): update dependencies/discatsharp digest to ab69b24 2025-03-15 02:44:39 +00:00
renovate[bot]
eadcd7ee85
chore(deps): update dotnet monorepo to 9.0.3 2025-03-11 17:33:22 +00:00
Lala Sabathil
02be184d6b
chore(deps): update dependencies/discatsharp digest to 20adeb0 (#556)
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| Dependencies/DisCatSharp | digest | `2a0fcc4` -> `20adeb0` |

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/Fortunevale/ProjectMakoto).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4xODUuNCIsInVwZGF0ZWRJblZlciI6IjM5LjE4NS40IiwidGFyZ2V0QnJhbmNoIjoiZGV2IiwibGFiZWxzIjpbXX0=-->
2025-03-08 21:52:57 +01:00
renovate[bot]
768c11b424
chore(deps): update dependencies/discatsharp digest to 20adeb0 2025-03-07 22:18:13 +00:00
Lala Sabathil
72041a034c
chore(deps): update dependency ffmpegcore to 5.2.0 (#555)
This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [FFMpegCore](https://redirect.github.com/rosenbjerg/FFMpegCore) |
`5.1.0` -> `5.2.0` |
[![age](https://developer.mend.io/api/mc/badges/age/nuget/FFMpegCore/5.2.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/nuget/FFMpegCore/5.2.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/nuget/FFMpegCore/5.1.0/5.2.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/nuget/FFMpegCore/5.1.0/5.2.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/Fortunevale/ProjectMakoto).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4xODUuNCIsInVwZGF0ZWRJblZlciI6IjM5LjE4NS40IiwidGFyZ2V0QnJhbmNoIjoiZGV2IiwibGFiZWxzIjpbXX0=-->
2025-03-06 01:31:05 +01:00
renovate[bot]
6766a6b51e
chore(deps): update dependency ffmpegcore to 5.2.0 2025-03-05 15:44:55 +00:00
Lala Sabathil
8d160455bd
chore(deps): update dependencies/discatsharp digest to 2a0fcc4 (#554)
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| Dependencies/DisCatSharp | digest | `9729aca` -> `2a0fcc4` |

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/Fortunevale/ProjectMakoto).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4xODUuNCIsInVwZGF0ZWRJblZlciI6IjM5LjE4NS40IiwidGFyZ2V0QnJhbmNoIjoiZGV2IiwibGFiZWxzIjpbXX0=-->
2025-03-04 17:05:54 +01:00
renovate[bot]
3093c2ae29
chore(deps): update dependencies/discatsharp digest to 2a0fcc4 2025-03-04 03:17:10 +00:00
Lala Sabathil
3a73ca58ec
chore(deps): update dependency genhttp.modules.staticwebsites to 9.7.0 (#549)
This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [GenHTTP.Modules.StaticWebsites](https://genhttp.org/)
([source](https://redirect.github.com/Kaliumhexacyanoferrat/GenHTTP)) |
`9.6.2` -> `9.7.0` |
[![age](https://developer.mend.io/api/mc/badges/age/nuget/GenHTTP.Modules.StaticWebsites/9.7.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/nuget/GenHTTP.Modules.StaticWebsites/9.7.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/nuget/GenHTTP.Modules.StaticWebsites/9.6.2/9.7.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/nuget/GenHTTP.Modules.StaticWebsites/9.6.2/9.7.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

<details>
<summary>Kaliumhexacyanoferrat/GenHTTP
(GenHTTP.Modules.StaticWebsites)</summary>

###
[`v9.7.0`](https://redirect.github.com/Kaliumhexacyanoferrat/GenHTTP/releases/tag/v9.7.0):
Version 9.7

#### Bug Fixes

- Fix a `StackOverflowException` when receiving a lot of data via a
websocket connection
([#&#8203;641](https://redirect.github.com/Kaliumhexacyanoferrat/GenHTTP/issues/641)
by [@&#8203;magnusjjj](https://redirect.github.com/magnusjjj))
- Fix reverse proxy returning a `204 No Content` response with content
([#&#8203;630](https://redirect.github.com/Kaliumhexacyanoferrat/GenHTTP/issues/630))
- Fix `path` being a reserved argument name in service routes
([#&#8203;637](https://redirect.github.com/Kaliumhexacyanoferrat/GenHTTP/issues/637))

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/Fortunevale/ProjectMakoto).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4xNzYuMiIsInVwZGF0ZWRJblZlciI6IjM5LjE4NS40IiwidGFyZ2V0QnJhbmNoIjoiZGV2IiwibGFiZWxzIjpbXX0=-->
2025-03-04 00:56:33 +01:00
renovate[bot]
389c32a238
chore(deps): update dependency genhttp.modules.staticwebsites to 9.7.0 2025-03-03 23:56:23 +00:00
Lala Sabathil
94ed0df9a7
chore(deps): update dependency genhttp.core to 9.7.0 (#548)
This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [GenHTTP.Core](https://genhttp.org/) | `9.6.2` -> `9.7.0` |
[![age](https://developer.mend.io/api/mc/badges/age/nuget/GenHTTP.Core/9.7.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/nuget/GenHTTP.Core/9.7.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/nuget/GenHTTP.Core/9.6.2/9.7.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/nuget/GenHTTP.Core/9.6.2/9.7.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/Fortunevale/ProjectMakoto).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4xNzYuMiIsInVwZGF0ZWRJblZlciI6IjM5LjE3Ni4yIiwidGFyZ2V0QnJhbmNoIjoiZGV2IiwibGFiZWxzIjpbXX0=-->
2025-03-04 00:55:59 +01:00
Lala Sabathil
c8a21b0b70
Update dev.yml
Signed-off-by: Lala Sabathil <aiko@aitsys.dev>
2025-03-04 00:51:38 +01:00
Lala Sabathil
d674f8404c
chore(deps): update dependencies/discatsharp digest to 9729aca (#553)
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| Dependencies/DisCatSharp | digest | `f8ac274` -> `9729aca` |

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/Fortunevale/ProjectMakoto).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4xODUuNCIsInVwZGF0ZWRJblZlciI6IjM5LjE4NS40IiwidGFyZ2V0QnJhbmNoIjoiZGV2IiwibGFiZWxzIjpbXX0=-->
2025-03-04 00:48:48 +01:00
renovate[bot]
ae09d35b0e
chore(deps): update dependencies/discatsharp digest to 9729aca 2025-03-03 23:32:08 +00:00
Lala Sabathil
d57a294f49
chore(deps): update dependencies/discatsharp digest to f8ac274 (#552)
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| Dependencies/DisCatSharp | digest | `25608db` -> `f8ac274` |

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/Fortunevale/ProjectMakoto).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4xODUuNCIsInVwZGF0ZWRJblZlciI6IjM5LjE4NS40IiwidGFyZ2V0QnJhbmNoIjoiZGV2IiwibGFiZWxzIjpbXX0=-->
2025-03-03 18:13:14 +01:00
renovate[bot]
c393de1082
chore(deps): update dependencies/discatsharp digest to f8ac274 2025-03-03 16:37:37 +00:00
Lala Sabathil
270c500410
chore(deps): update dependencies/discatsharp digest to 25608db (#551)
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| Dependencies/DisCatSharp | digest | `883ab23` -> `25608db` |

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/Fortunevale/ProjectMakoto).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4xNzYuMiIsInVwZGF0ZWRJblZlciI6IjM5LjE3Ni4yIiwidGFyZ2V0QnJhbmNoIjoiZGV2IiwibGFiZWxzIjpbXX0=-->
2025-03-02 17:30:14 +01:00
renovate[bot]
9857a77dd4
chore(deps): update dependencies/discatsharp digest to 25608db 2025-03-02 14:15:13 +00:00
Lala Sabathil
b807ebda4d
chore(deps): update dependencies/discatsharp digest to 883ab23 (#550)
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| Dependencies/DisCatSharp | digest | `eb409de` -> `883ab23` |

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/Fortunevale/ProjectMakoto).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4xNzYuMiIsInVwZGF0ZWRJblZlciI6IjM5LjE3Ni4yIiwidGFyZ2V0QnJhbmNoIjoiZGV2IiwibGFiZWxzIjpbXX0=-->
2025-03-01 00:02:01 +01:00
renovate[bot]
c800526ca8
chore(deps): update dependencies/discatsharp digest to 883ab23 2025-02-28 21:51:23 +00:00
renovate[bot]
c9c220a8ea
chore(deps): update dependency genhttp.core to 9.7.0 2025-02-27 18:20:02 +00:00
Lala Sabathil
6dbb5bd738
chore(deps): update dotnet monorepo to 4.13.0 (#545)
This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
|
[Microsoft.CodeAnalysis.CSharp](https://redirect.github.com/dotnet/roslyn)
| `4.12.0` -> `4.13.0` |
[![age](https://developer.mend.io/api/mc/badges/age/nuget/Microsoft.CodeAnalysis.CSharp/4.13.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/nuget/Microsoft.CodeAnalysis.CSharp/4.13.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/nuget/Microsoft.CodeAnalysis.CSharp/4.12.0/4.13.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/nuget/Microsoft.CodeAnalysis.CSharp/4.12.0/4.13.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
|
[Microsoft.CodeAnalysis.Scripting](https://redirect.github.com/dotnet/roslyn)
| `4.12.0` -> `4.13.0` |
[![age](https://developer.mend.io/api/mc/badges/age/nuget/Microsoft.CodeAnalysis.Scripting/4.13.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/nuget/Microsoft.CodeAnalysis.Scripting/4.13.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/nuget/Microsoft.CodeAnalysis.Scripting/4.12.0/4.13.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/nuget/Microsoft.CodeAnalysis.Scripting/4.12.0/4.13.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about these
updates again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/Fortunevale/ProjectMakoto).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4xNzYuMiIsInVwZGF0ZWRJblZlciI6IjM5LjE3Ni4yIiwidGFyZ2V0QnJhbmNoIjoiZGV2IiwibGFiZWxzIjpbXX0=-->
2025-02-27 08:14:19 +01:00
Lala Sabathil
2024d85a82
chore(deps): update dependencies/discatsharp digest to eb409de (#546)
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| Dependencies/DisCatSharp | digest | `e95f028` -> `eb409de` |

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/Fortunevale/ProjectMakoto).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4xNzYuMiIsInVwZGF0ZWRJblZlciI6IjM5LjE3Ni4yIiwidGFyZ2V0QnJhbmNoIjoiZGV2IiwibGFiZWxzIjpbXX0=-->
2025-02-27 08:13:49 +01:00
renovate[bot]
ca9b970829
chore(deps): update dependencies/discatsharp digest to eb409de 2025-02-27 07:00:30 +00:00
Lala Sabathil
2b4e6b59a1
chore(deps): update dependencies/discatsharp digest to e95f028 (#544)
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| Dependencies/DisCatSharp | digest | `584452e` -> `e95f028` |

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/Fortunevale/ProjectMakoto).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4xNzYuMiIsInVwZGF0ZWRJblZlciI6IjM5LjE3Ni4yIiwidGFyZ2V0QnJhbmNoIjoiZGV2IiwibGFiZWxzIjpbXX0=-->
2025-02-24 23:19:19 +01:00
renovate[bot]
8b03d88106
chore(deps): update dotnet monorepo to 4.13.0 2025-02-24 22:10:28 +00:00
renovate[bot]
92cd485f9c
chore(deps): update dependencies/discatsharp digest to e95f028 2025-02-24 22:10:24 +00:00
Lala Sabathil
e04ecc09eb
fix: use role.type 2025-02-24 01:10:05 +01:00
Lala Sabathil
b7cd7c8480
chore(deps): update dependencies/discatsharp digest to 584452e (#540)
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| Dependencies/DisCatSharp | digest | `5ace61e` -> `584452e` |

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/Fortunevale/ProjectMakoto).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4xNjcuMSIsInVwZGF0ZWRJblZlciI6IjM5LjE3Ni4yIiwidGFyZ2V0QnJhbmNoIjoiZGV2IiwibGFiZWxzIjpbXX0=-->
2025-02-24 00:58:14 +01:00
renovate[bot]
6768421fee
chore(deps): update dependencies/discatsharp digest to 584452e 2025-02-23 22:57:06 +00:00
Mira
772d8715a5
Update renovate.json
Signed-off-by: Mira <xorog@outlook.de>
2025-02-23 04:25:53 +01:00
Mira
77bcd25224
Revert "chore(deps): update ncipollo/release-action action to v1.16.0" (#542) 2025-02-23 04:23:37 +01:00
Lala Sabathil
88f11da182
chore(deps): update ncipollo/release-action action to v1.16.0 (#541)
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
|
[ncipollo/release-action](https://redirect.github.com/ncipollo/release-action)
| action | minor | `v1.14.0` -> `v1.16.0` |

---

### Release Notes

<details>
<summary>ncipollo/release-action (ncipollo/release-action)</summary>

###
[`v1.16.0`](https://redirect.github.com/ncipollo/release-action/releases/tag/v1.16.0)

[Compare
Source](https://redirect.github.com/ncipollo/release-action/compare/v1.15.0...v1.16.0)

#### What's Changed

- Bump
[@&#8203;octokit/request-error](https://redirect.github.com/octokit/request-error)
from 5.0.1 to 5.1.1 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[https://github.com/ncipollo/release-action/pull/498](https://redirect.github.com/ncipollo/release-action/pull/498)
- Update checkout action version in example by
[@&#8203;Cycloctane](https://redirect.github.com/Cycloctane) in
[https://github.com/ncipollo/release-action/pull/496](https://redirect.github.com/ncipollo/release-action/pull/496)
- Bump undici from 5.28.4 to 5.28.5 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[https://github.com/ncipollo/release-action/pull/499](https://redirect.github.com/ncipollo/release-action/pull/499)
- Bump glob from 11.0.0 to 11.0.1 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[https://github.com/ncipollo/release-action/pull/495](https://redirect.github.com/ncipollo/release-action/pull/495)
- Bump [@&#8203;types/node](https://redirect.github.com/types/node) from
22.10.3 to 22.13.4 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[https://github.com/ncipollo/release-action/pull/500](https://redirect.github.com/ncipollo/release-action/pull/500)
- Regenerate release notes on release updates by
[@&#8203;rantoniuk](https://redirect.github.com/rantoniuk) in
[https://github.com/ncipollo/release-action/pull/497](https://redirect.github.com/ncipollo/release-action/pull/497)

#### New Contributors

- [@&#8203;rantoniuk](https://redirect.github.com/rantoniuk) made their
first contribution in
[https://github.com/ncipollo/release-action/pull/497](https://redirect.github.com/ncipollo/release-action/pull/497)

**Full Changelog**:
https://github.com/ncipollo/release-action/compare/v1...v1.16.0

###
[`v1.15.0`](https://redirect.github.com/ncipollo/release-action/releases/tag/v1.15.0)

[Compare
Source](https://redirect.github.com/ncipollo/release-action/compare/v1.14.0...v1.15.0)

#### What's Changed

Add more explicit error when release list API call fails.

TLDR below - many dependency updates.

- Bump semver from 6.3.0 to 6.3.1 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[https://github.com/ncipollo/release-action/pull/350](https://redirect.github.com/ncipollo/release-action/pull/350)
- Bump actions/checkout from 3 to 4 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[https://github.com/ncipollo/release-action/pull/364](https://redirect.github.com/ncipollo/release-action/pull/364)
- Bump glob from 10.3.1 to 10.3.4 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[https://github.com/ncipollo/release-action/pull/361](https://redirect.github.com/ncipollo/release-action/pull/361)
- Bump jest-circus from 29.5.0 to 29.6.4 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[https://github.com/ncipollo/release-action/pull/359](https://redirect.github.com/ncipollo/release-action/pull/359)
- Bump typescript from 5.1.6 to 5.2.2 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[https://github.com/ncipollo/release-action/pull/362](https://redirect.github.com/ncipollo/release-action/pull/362)
- Bump [@&#8203;types/node](https://redirect.github.com/types/node) from
20.3.3 to 20.6.0 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[https://github.com/ncipollo/release-action/pull/366](https://redirect.github.com/ncipollo/release-action/pull/366)
- Bump jest and
[@&#8203;types/jest](https://redirect.github.com/types/jest) by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[https://github.com/ncipollo/release-action/pull/367](https://redirect.github.com/ncipollo/release-action/pull/367)
- Bump
[@&#8203;babel/traverse](https://redirect.github.com/babel/traverse)
from 7.17.3 to 7.23.2 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[https://github.com/ncipollo/release-action/pull/378](https://redirect.github.com/ncipollo/release-action/pull/378)
- Bump jest and
[@&#8203;types/jest](https://redirect.github.com/types/jest) by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[https://github.com/ncipollo/release-action/pull/377](https://redirect.github.com/ncipollo/release-action/pull/377)
- Bump jest-circus from 29.6.4 to 29.7.0 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[https://github.com/ncipollo/release-action/pull/376](https://redirect.github.com/ncipollo/release-action/pull/376)
- Bump [@&#8203;types/node](https://redirect.github.com/types/node) from
20.6.0 to 20.8.6 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[https://github.com/ncipollo/release-action/pull/379](https://redirect.github.com/ncipollo/release-action/pull/379)
- Bump [@&#8203;actions/core](https://redirect.github.com/actions/core)
from 1.10.0 to 1.10.1 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[https://github.com/ncipollo/release-action/pull/375](https://redirect.github.com/ncipollo/release-action/pull/375)
- Bump [@&#8203;types/jest](https://redirect.github.com/types/jest) from
29.5.5 to 29.5.7 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[https://github.com/ncipollo/release-action/pull/386](https://redirect.github.com/ncipollo/release-action/pull/386)
- Bump actions/setup-node from 3 to 4 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[https://github.com/ncipollo/release-action/pull/381](https://redirect.github.com/ncipollo/release-action/pull/381)
- Bump [@&#8203;types/node](https://redirect.github.com/types/node) from
20.8.6 to 20.9.0 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[https://github.com/ncipollo/release-action/pull/390](https://redirect.github.com/ncipollo/release-action/pull/390)
- Bump typescript from 5.2.2 to 5.3.2 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[https://github.com/ncipollo/release-action/pull/396](https://redirect.github.com/ncipollo/release-action/pull/396)
- Bump [@&#8203;types/node](https://redirect.github.com/types/node) from
20.9.0 to 20.10.1 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[https://github.com/ncipollo/release-action/pull/395](https://redirect.github.com/ncipollo/release-action/pull/395)
- Bump [@&#8203;types/jest](https://redirect.github.com/types/jest) from
29.5.7 to 29.5.11 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[https://github.com/ncipollo/release-action/pull/399](https://redirect.github.com/ncipollo/release-action/pull/399)
- Bump
[@&#8203;actions/github](https://redirect.github.com/actions/github)
from 5.1.1 to 6.0.0 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[https://github.com/ncipollo/release-action/pull/385](https://redirect.github.com/ncipollo/release-action/pull/385)
- Bump typescript from 5.3.2 to 5.3.3 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[https://github.com/ncipollo/release-action/pull/403](https://redirect.github.com/ncipollo/release-action/pull/403)
- Bump [@&#8203;types/node](https://redirect.github.com/types/node) from
20.10.1 to 20.10.6 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[https://github.com/ncipollo/release-action/pull/402](https://redirect.github.com/ncipollo/release-action/pull/402)
- Upgrade to Node 20 by
[@&#8203;aovens-quantifi](https://redirect.github.com/aovens-quantifi)
in
[https://github.com/ncipollo/release-action/pull/411](https://redirect.github.com/ncipollo/release-action/pull/411)
- Bump undici from 5.28.2 to 5.28.3 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[https://github.com/ncipollo/release-action/pull/423](https://redirect.github.com/ncipollo/release-action/pull/423)
- Bump [@&#8203;types/jest](https://redirect.github.com/types/jest) from
29.5.11 to 29.5.12 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[https://github.com/ncipollo/release-action/pull/427](https://redirect.github.com/ncipollo/release-action/pull/427)
- Bump [@&#8203;types/node](https://redirect.github.com/types/node) from
20.10.6 to 20.11.24 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[https://github.com/ncipollo/release-action/pull/426](https://redirect.github.com/ncipollo/release-action/pull/426)
- Bump ts-jest from 29.1.1 to 29.1.2 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[https://github.com/ncipollo/release-action/pull/409](https://redirect.github.com/ncipollo/release-action/pull/409)
- Bump undici from 5.28.3 to 5.28.4 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[https://github.com/ncipollo/release-action/pull/439](https://redirect.github.com/ncipollo/release-action/pull/439)
- Bump typescript from 5.3.3 to 5.4.3 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[https://github.com/ncipollo/release-action/pull/438](https://redirect.github.com/ncipollo/release-action/pull/438)
- Bump [@&#8203;types/node](https://redirect.github.com/types/node) from
20.11.24 to 20.12.2 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[https://github.com/ncipollo/release-action/pull/437](https://redirect.github.com/ncipollo/release-action/pull/437)
- Bump glob from 10.3.10 to 10.3.12 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[https://github.com/ncipollo/release-action/pull/436](https://redirect.github.com/ncipollo/release-action/pull/436)
- Bump braces from 3.0.2 to 3.0.3 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[https://github.com/ncipollo/release-action/pull/449](https://redirect.github.com/ncipollo/release-action/pull/449)
- Bump glob from 10.3.12 to 11.0.0 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[https://github.com/ncipollo/release-action/pull/457](https://redirect.github.com/ncipollo/release-action/pull/457)
- Bump typescript from 5.4.3 to 5.5.4 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[https://github.com/ncipollo/release-action/pull/459](https://redirect.github.com/ncipollo/release-action/pull/459)
- Bump ts-jest from 29.1.2 to 29.2.4 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[https://github.com/ncipollo/release-action/pull/460](https://redirect.github.com/ncipollo/release-action/pull/460)
- Bump [@&#8203;types/node](https://redirect.github.com/types/node) from
20.12.2 to 22.0.2 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[https://github.com/ncipollo/release-action/pull/458](https://redirect.github.com/ncipollo/release-action/pull/458)
- Bump cross-spawn from 7.0.3 to 7.0.6 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[https://github.com/ncipollo/release-action/pull/480](https://redirect.github.com/ncipollo/release-action/pull/480)
- Bump micromatch from 4.0.4 to 4.0.8 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[https://github.com/ncipollo/release-action/pull/463](https://redirect.github.com/ncipollo/release-action/pull/463)
- Bump [@&#8203;types/node](https://redirect.github.com/types/node) from
22.0.2 to 22.10.3 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[https://github.com/ncipollo/release-action/pull/487](https://redirect.github.com/ncipollo/release-action/pull/487)
- Bump [@&#8203;types/jest](https://redirect.github.com/types/jest) from
29.5.12 to 29.5.14 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[https://github.com/ncipollo/release-action/pull/476](https://redirect.github.com/ncipollo/release-action/pull/476)
- Bump ts-jest from 29.2.4 to 29.2.5 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[https://github.com/ncipollo/release-action/pull/464](https://redirect.github.com/ncipollo/release-action/pull/464)
- Bump [@&#8203;actions/core](https://redirect.github.com/actions/core)
from 1.10.1 to 1.11.1 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[https://github.com/ncipollo/release-action/pull/488](https://redirect.github.com/ncipollo/release-action/pull/488)
- Bump typescript from 5.5.4 to 5.7.3 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[https://github.com/ncipollo/release-action/pull/490](https://redirect.github.com/ncipollo/release-action/pull/490)

#### New Contributors

- [@&#8203;aovens-quantifi](https://redirect.github.com/aovens-quantifi)
made their first contribution in
[https://github.com/ncipollo/release-action/pull/411](https://redirect.github.com/ncipollo/release-action/pull/411)

**Full Changelog**:
https://github.com/ncipollo/release-action/compare/v1.13.0...v1.15.0

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/Fortunevale/ProjectMakoto).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4xNzYuMiIsInVwZGF0ZWRJblZlciI6IjM5LjE3Ni4yIiwidGFyZ2V0QnJhbmNoIjoiZGV2IiwibGFiZWxzIjpbXX0=-->
2025-02-22 19:44:14 +01:00
renovate[bot]
b44a6dbacc
chore(deps): update ncipollo/release-action action to v1.16.0 2025-02-22 18:11:22 +00:00
Lala Sabathil
3cf99fd69d
chore(deps): update dependencies/discatsharp digest to 5ace61e (#539)
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| Dependencies/DisCatSharp | digest | `9ae63bd` -> `5ace61e` |

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/Fortunevale/ProjectMakoto).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4xNjcuMSIsInVwZGF0ZWRJblZlciI6IjM5LjE2Ny4xIiwidGFyZ2V0QnJhbmNoIjoiZGV2IiwibGFiZWxzIjpbXX0=-->
2025-02-13 11:43:23 +01:00
renovate[bot]
078d7984b8
chore(deps): update dependencies/discatsharp digest to 5ace61e 2025-02-13 10:23:59 +00:00
Lala Sabathil
6c15be31bd
chore(deps): update dependencies/discatsharp digest to 9ae63bd (#538)
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| Dependencies/DisCatSharp | digest | `613b8ab` -> `9ae63bd` |

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/Fortunevale/ProjectMakoto).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4xNjQuMSIsInVwZGF0ZWRJblZlciI6IjM5LjE2NC4xIiwidGFyZ2V0QnJhbmNoIjoiZGV2IiwibGFiZWxzIjpbXX0=-->
2025-02-12 12:26:04 +01:00
renovate[bot]
21d4be4239
chore(deps): update dependencies/discatsharp digest to 9ae63bd 2025-02-12 10:30:25 +00:00
renovate[bot]
b440e3fa60
chore(deps): update dependencies/discatsharp digest to 613b8ab (#535)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-02-11 23:33:58 +01:00
renovate[bot]
805bba780e
chore(deps): update dependency system.text.json to 9.0.2 (#537)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-02-11 23:33:15 +01:00
renovate[bot]
1035eeb1cf
chore(deps): update dependency system.drawing.common to 9.0.2 (#536)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-02-11 23:31:56 +01:00
Lala Sabathil
b38a91473e
chore(deps): update dependencies/discatsharp digest to 57a7820 (#534)
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| Dependencies/DisCatSharp | digest | `bfd01f5` -> `57a7820` |

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/Fortunevale/ProjectMakoto).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4xNjQuMSIsInVwZGF0ZWRJblZlciI6IjM5LjE2NC4xIiwidGFyZ2V0QnJhbmNoIjoiZGV2IiwibGFiZWxzIjpbXX0=-->
2025-02-11 18:42:38 +01:00
renovate[bot]
a9f7244b17
chore(deps): update dependencies/discatsharp digest to 57a7820 2025-02-11 17:37:13 +00:00
Lala Sabathil
a6eafd3d05
chore(deps): update dependencies/discatsharp digest to bfd01f5 (#533)
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| Dependencies/DisCatSharp | digest | `7848dd1` -> `bfd01f5` |

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/Fortunevale/ProjectMakoto).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4xNjQuMSIsInVwZGF0ZWRJblZlciI6IjM5LjE2NC4xIiwidGFyZ2V0QnJhbmNoIjoiZGV2IiwibGFiZWxzIjpbXX0=-->
2025-02-11 18:36:33 +01:00
renovate[bot]
6da3e2055b
chore(deps): update dependencies/discatsharp digest to bfd01f5 2025-02-11 17:04:15 +00:00
Lala Sabathil
cc22de02c9
fix compiler 2025-02-11 10:47:38 +01:00
Lala Sabathil
11dd71537d
fix issues 2025-02-11 10:39:42 +01:00
Lala Sabathil
293ccd8c52
Update DiscordExtensions.cs 2025-02-11 10:28:19 +01:00
Lala Sabathil
1b2fc0f3b9
fix: fix dcs changes 2025-02-11 10:24:29 +01:00
Lala Sabathil
a02fd32990
chore(deps): update dependencies/discatsharp digest to 7848dd1 (#532)
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| Dependencies/DisCatSharp | digest | `0b85fab` -> `7848dd1` |

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/Fortunevale/ProjectMakoto).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4xNjQuMSIsInVwZGF0ZWRJblZlciI6IjM5LjE2NC4xIiwidGFyZ2V0QnJhbmNoIjoiZGV2IiwibGFiZWxzIjpbXX0=-->
2025-02-11 10:06:09 +01:00
renovate[bot]
906c539cca
chore(deps): update dependencies/discatsharp digest to 7848dd1 2025-02-11 04:38:23 +00:00
Lala Sabathil
a6ae872744
chore(deps): update dependencies/discatsharp digest to 0b85fab (#531)
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| Dependencies/DisCatSharp | digest | `dd5b346` -> `0b85fab` |

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/Fortunevale/ProjectMakoto).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4xNjQuMSIsInVwZGF0ZWRJblZlciI6IjM5LjE2NC4xIiwidGFyZ2V0QnJhbmNoIjoiZGV2IiwibGFiZWxzIjpbXX0=-->
2025-02-10 22:53:49 +01:00
renovate[bot]
5181b4aaa3
chore(deps): update dependencies/discatsharp digest to 0b85fab 2025-02-10 21:41:23 +00:00
Lala Sabathil
e2cab675c8
chore(deps): update dependency genhttp.modules.staticwebsites to 9.6.2 (#525)
This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [GenHTTP.Modules.StaticWebsites](https://genhttp.org/)
([source](https://redirect.github.com/Kaliumhexacyanoferrat/GenHTTP)) |
`9.6.0` -> `9.6.2` |
[![age](https://developer.mend.io/api/mc/badges/age/nuget/GenHTTP.Modules.StaticWebsites/9.6.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/nuget/GenHTTP.Modules.StaticWebsites/9.6.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/nuget/GenHTTP.Modules.StaticWebsites/9.6.0/9.6.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/nuget/GenHTTP.Modules.StaticWebsites/9.6.0/9.6.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

<details>
<summary>Kaliumhexacyanoferrat/GenHTTP
(GenHTTP.Modules.StaticWebsites)</summary>

###
[`v9.6.2`](https://redirect.github.com/Kaliumhexacyanoferrat/GenHTTP/releases/tag/v9.6.2):
Version 9.6.2

#### Bug Fixes

- Fix `Keep-Alive` connections breaking on .NET 8
([#&#8203;628](https://redirect.github.com/Kaliumhexacyanoferrat/GenHTTP/pull/628))

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/Fortunevale/ProjectMakoto).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4xNDUuMCIsInVwZGF0ZWRJblZlciI6IjM5LjE2NC4xIiwidGFyZ2V0QnJhbmNoIjoiZGV2IiwibGFiZWxzIjpbXX0=-->
2025-02-10 19:12:52 +01:00
renovate[bot]
a601dd13ef
chore(deps): update dependency genhttp.modules.staticwebsites to 9.6.2 2025-02-10 18:12:25 +00:00
Lala Sabathil
38922d93df
chore(deps): update dependency genhttp.core to 9.6.2 (#524)
This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [GenHTTP.Core](https://genhttp.org/) | `9.6.0` -> `9.6.2` |
[![age](https://developer.mend.io/api/mc/badges/age/nuget/GenHTTP.Core/9.6.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/nuget/GenHTTP.Core/9.6.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/nuget/GenHTTP.Core/9.6.0/9.6.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/nuget/GenHTTP.Core/9.6.0/9.6.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/Fortunevale/ProjectMakoto).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4xNDUuMCIsInVwZGF0ZWRJblZlciI6IjM5LjE0NS4wIiwidGFyZ2V0QnJhbmNoIjoiZGV2IiwibGFiZWxzIjpbXX0=-->
2025-02-10 19:11:48 +01:00
Lala Sabathil
7a9b9fc8e3
Update dev.yml
Signed-off-by: Lala Sabathil <aiko@aitsys.dev>
2025-02-10 19:11:33 +01:00
Lala Sabathil
5ec50d9645
chore(deps): update dependencies/discatsharp digest to dd5b346 (#530)
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| Dependencies/DisCatSharp | digest | `ded64f1` -> `dd5b346` |

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/Fortunevale/ProjectMakoto).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4xNDUuMCIsInVwZGF0ZWRJblZlciI6IjM5LjE2NC4xIiwidGFyZ2V0QnJhbmNoIjoiZGV2IiwibGFiZWxzIjpbXX0=-->
2025-02-10 19:10:34 +01:00
renovate[bot]
b9207c0271
chore(deps): update dependencies/discatsharp digest to dd5b346 2025-02-10 17:00:48 +00:00
Lala Sabathil
d9b9c2a604
chore(deps): update dependencies/discatsharp digest to ded64f1 (#529)
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| Dependencies/DisCatSharp | digest | `0178d4b` -> `ded64f1` |

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/Fortunevale/ProjectMakoto).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4xNDUuMCIsInVwZGF0ZWRJblZlciI6IjM5LjE0NS4wIiwidGFyZ2V0QnJhbmNoIjoiZGV2IiwibGFiZWxzIjpbXX0=-->
2025-02-07 02:18:16 +01:00
renovate[bot]
e9d438a860
chore(deps): update dependencies/discatsharp digest to ded64f1 2025-02-07 00:56:03 +00:00
Lala Sabathil
db6cb7af0c
chore(deps): update dependencies/discatsharp digest to 0178d4b (#528)
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| Dependencies/DisCatSharp | digest | `8703ed1` -> `0178d4b` |

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/Fortunevale/ProjectMakoto).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4xNDUuMCIsInVwZGF0ZWRJblZlciI6IjM5LjE0NS4wIiwidGFyZ2V0QnJhbmNoIjoiZGV2IiwibGFiZWxzIjpbXX0=-->
2025-02-05 23:03:08 +01:00
renovate[bot]
8c0519048c
chore(deps): update dependencies/discatsharp digest to 0178d4b 2025-02-05 09:44:40 +00:00
Lala Sabathil
59b7abf932
chore(deps): update dependencies/discatsharp digest to 8703ed1 (#527)
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| Dependencies/DisCatSharp | digest | `52c69f9` -> `8703ed1` |

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/Fortunevale/ProjectMakoto).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4xNDUuMCIsInVwZGF0ZWRJblZlciI6IjM5LjE0NS4wIiwidGFyZ2V0QnJhbmNoIjoiZGV2IiwibGFiZWxzIjpbXX0=-->
2025-02-05 05:49:18 +01:00
renovate[bot]
5dfc15fa83
chore(deps): update dependencies/discatsharp digest to 8703ed1 2025-02-04 21:47:35 +00:00
Lala Sabathil
159edca9e4
chore(deps): update dependencies/discatsharp digest to 52c69f9 (#526)
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| Dependencies/DisCatSharp | digest | `88f6d58` -> `52c69f9` |

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/Fortunevale/ProjectMakoto).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4xNDUuMCIsInVwZGF0ZWRJblZlciI6IjM5LjE0NS4wIiwidGFyZ2V0QnJhbmNoIjoiZGV2IiwibGFiZWxzIjpbXX0=-->
2025-02-03 15:20:07 +01:00
renovate[bot]
89463f8ed6
chore(deps): update dependencies/discatsharp digest to 52c69f9 2025-02-03 14:01:00 +00:00
renovate[bot]
d3e8aa676e
chore(deps): update dependency genhttp.core to 9.6.2 2025-01-31 13:32:57 +00:00
Lala Sabathil
795a5211bf
chore(deps): update dependencies/discatsharp digest to 88f6d58 (#523)
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| Dependencies/DisCatSharp | digest | `79808aa` -> `88f6d58` |

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/Fortunevale/ProjectMakoto).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4xMjUuMSIsInVwZGF0ZWRJblZlciI6IjM5LjEyNS4xIiwidGFyZ2V0QnJhbmNoIjoiZGV2IiwibGFiZWxzIjpbXX0=-->
2025-01-30 17:52:45 +01:00
renovate[bot]
055d098d20
chore(deps): update dependencies/discatsharp digest to 88f6d58 2025-01-30 13:47:27 +00:00
Mira
46dc0947c4
chore: Update breaking change 2025-01-29 22:52:19 +01:00
renovate[bot]
dac0a0a8b4
chore(deps): update dependencies/discatsharp digest to 79808aa (#522)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-29 22:20:35 +01:00
Lala Sabathil
73d285c99d
chore(deps): update dependency htmlsanitizer to v9 (#521)
This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [HtmlSanitizer](https://redirect.github.com/mganss/HtmlSanitizer) |
`8.1.870` -> `9.0.876` |
[![age](https://developer.mend.io/api/mc/badges/age/nuget/HtmlSanitizer/9.0.876?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/nuget/HtmlSanitizer/9.0.876?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/nuget/HtmlSanitizer/8.1.870/9.0.876?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/nuget/HtmlSanitizer/8.1.870/9.0.876?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

<details>
<summary>mganss/HtmlSanitizer (HtmlSanitizer)</summary>

###
[`v9.0.876`](https://redirect.github.com/mganss/HtmlSanitizer/releases/tag/v9.0.876):
9.0.876


[#&#8203;565](https://redirect.github.com/mganss/HtmlSanitizer/issues/565)

###
[`v9.0.873`](https://redirect.github.com/mganss/HtmlSanitizer/releases/tag/v9.0.873):
9.0.873

Add FilterUrl to IHtmlSanitizer (fixes
[#&#8203;565](https://redirect.github.com/mganss/HtmlSanitizer/issues/565))

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/Fortunevale/ProjectMakoto).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4xMjUuMSIsInVwZGF0ZWRJblZlciI6IjM5LjEyNS4xIiwidGFyZ2V0QnJhbmNoIjoiZGV2IiwibGFiZWxzIjpbXX0=-->
2025-01-29 22:09:08 +01:00
renovate[bot]
7f2b5b38f4
chore(deps): update dependency htmlsanitizer to v9 2025-01-29 17:56:17 +00:00
68 changed files with 496 additions and 270 deletions

View file

@ -18,7 +18,7 @@ jobs:
with:
exclude_path: 'SecretsIgnore.txt'
spellcheck:
name: Clone Repository
name: Spell Check
runs-on: self-hosted
steps:
- name: Checkout Actions Repository
@ -39,6 +39,7 @@ jobs:
uses: actions/setup-dotnet@v4
with:
dotnet-version: |
10.0.100-preview.1.25120.13
9.x
- name: "Clone Repository"

@ -1 +1 @@
Subproject commit dadeb77e1667b6785ee8368eb92b2bbe1efba06e
Subproject commit cc41bea57617e81f116fbbae6e7de2f8d9ca3991

@ -1 +1 @@
Subproject commit 79e7cffb4e38d68d2af71d321d8698fd799b3e59
Subproject commit 2ca985d24861f56feccc901357283dacc72182bf

@ -1 +1 @@
Subproject commit b0318f5602b29482638a71dae7184b075bc58b5a
Subproject commit f2b6f1aaa49060e0592986d93ef45694dc157f4f

@ -1 +1 @@
Subproject commit 4e795fddc75a59f2512243f59c02de3d0823cdd2
Subproject commit 3bb0c0e17764905e8931346e7a5a3526a0441b7c

@ -1 +1 @@
Subproject commit ea04fd278535c33a3b78d056adf6c25a5cb687bc
Subproject commit 0e28d28f051edb2e7cfb9699d2d12f3dd49fac78

View file

@ -13,7 +13,7 @@ for /d /r %%i in (*deps*) do (
cd /d "%original_dir%"
git submodule update --init --depth 0
REM git submodule update --init --depth 0
for /D %%i in (*) do (
if /I "%%i" neq "deps" (

View file

@ -334,6 +334,7 @@ public sealed class Bot
}
});
_ = this.CleanupOldPrunedMessages().Add(this);
_ = this.ProcessDeletionRequests().Add(this);
}).Add(this).IsVital();
@ -522,6 +523,42 @@ public sealed class Bot
Environment.FailFast("Failed to exit");
}
private async Task CleanupOldPrunedMessages()
{
_ = new Func<Task>(async () =>
{
_ = this.CleanupOldPrunedMessages().Add(this);
}).CreateScheduledTask(DateTime.UtcNow.AddHours(24));
foreach (var guildDirectory in Directory.GetDirectories("WebServer").Select(x => new DirectoryInfo(x)))
{
if (guildDirectory.GetDirectories().Any(x => x.Name.Equals("DeletedMessages", StringComparison.CurrentCultureIgnoreCase)))
{
var deletedMessagesDirectory = guildDirectory.GetDirectories().First(x => x.Name.Equals("DeletedMessages", StringComparison.CurrentCultureIgnoreCase));
foreach (var deletedMessageFile in deletedMessagesDirectory.GetFiles())
{
if (deletedMessageFile.LastWriteTimeUtc.GetTimespanSince() > TimeSpan.FromDays(30))
{
Log.Information("Deleting '{File}'..", deletedMessageFile.FullName);
deletedMessageFile.Delete();
}
}
if (deletedMessagesDirectory.GetFiles().Length == 0)
{
Log.Information("Deleting '{File}'..", deletedMessagesDirectory.FullName);
deletedMessagesDirectory.Delete();
}
}
if (guildDirectory.GetFiles().Length == 0 && guildDirectory.GetDirectories().Length == 0)
{
Log.Information("Deleting '{File}'..", guildDirectory.FullName);
guildDirectory.Delete();
}
}
}
private async Task ProcessDeletionRequests()
{
_ = new Func<Task>(async () =>

View file

@ -253,10 +253,10 @@ public abstract class BaseCommand
#region RespondOrEdit
public Task<DiscordMessage> RespondOrEdit(DiscordEmbed embed)
=> this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(embed));
=> this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(embed));
public Task<DiscordMessage> RespondOrEdit(DiscordEmbedBuilder embed)
=> this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(embed.Build()));
=> this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(embed.Build()));
public Task<DiscordMessage> RespondOrEdit(string content)
=> this.RespondOrEdit(new DiscordMessageBuilder().WithContent(content));
@ -274,7 +274,9 @@ public abstract class BaseCommand
foreach (var b in discordMessageBuilder.Files)
files.Add(b.Filename, b.Stream);
if (discordMessageBuilder.Components.IsNotNullAndNotEmpty())
_ = discordWebhookBuilder.AddComponents(discordMessageBuilder.Components);
_ = discordWebhookBuilder.AddEmbeds(discordMessageBuilder.Embeds);
_ = discordWebhookBuilder.AddFiles(files);
discordWebhookBuilder.Content = discordMessageBuilder.Content;
@ -293,7 +295,9 @@ public abstract class BaseCommand
foreach (var b in discordMessageBuilder.Files)
files.Add(b.Filename, b.Stream);
if (discordMessageBuilder.Components.IsNotNullAndNotEmpty())
_ = discordWebhookBuilder.AddComponents(discordMessageBuilder.Components);
_ = discordWebhookBuilder.AddEmbeds(discordMessageBuilder.Embeds);
_ = discordWebhookBuilder.AddFiles(files);
discordWebhookBuilder.Content = discordMessageBuilder.Content;
@ -312,7 +316,9 @@ public abstract class BaseCommand
foreach (var b in discordMessageBuilder.Files)
files.Add(b.Filename, b.Stream);
if (discordMessageBuilder.Components.IsNotNullAndNotEmpty())
_ = discordWebhookBuilder.AddComponents(discordMessageBuilder.Components);
_ = discordWebhookBuilder.AddEmbeds(discordMessageBuilder.Embeds);
_ = discordWebhookBuilder.AddFiles(files);
discordWebhookBuilder.Content = discordMessageBuilder.Content;
@ -437,7 +443,7 @@ public abstract class BaseCommand
async Task RefreshMessage()
{
var dropdown = new DiscordRoleSelectComponent(this.GetString(this.t.Commands.Common.Prompts.SelectARole), SelectionInteractionId, 1, 1, false);
var builder = new DiscordMessageBuilder().WithEmbed(new DiscordEmbedBuilder(this.ctx.ResponseMessage.Embeds[0]).AsAwaitingInput(this.ctx)).AddComponents(dropdown).WithContent(this.ctx.ResponseMessage.Content);
var builder = new DiscordMessageBuilder().AddEmbed(new DiscordEmbedBuilder(this.ctx.ResponseMessage.Embeds[0]).AsAwaitingInput(this.ctx)).AddComponents(dropdown).WithContent(this.ctx.ResponseMessage.Content);
if (Selected.IsNullOrWhiteSpace())
_ = ConfirmSelectionButton.Disable();
@ -541,7 +547,7 @@ public abstract class BaseCommand
this.ctx.Client.ComponentInteractionCreated -= RunInteraction;
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(this.ctx.ResponseMessage.Embeds[0]).WithContent(this.ctx.ResponseMessage.Content));
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(this.ctx.ResponseMessage.Embeds[0]).WithContent(this.ctx.ResponseMessage.Content));
if (ExceptionOccurred)
return new InteractionResult<DiscordRole>(ThrownException);
@ -578,7 +584,7 @@ public abstract class BaseCommand
async Task RefreshMessage()
{
var dropdown = new DiscordChannelSelectComponent(this.GetString(this.t.Commands.Common.Prompts.SelectAChannel), channelTypes, SelectionInteractionId);
var builder = new DiscordMessageBuilder().WithEmbed(new DiscordEmbedBuilder(this.ctx.ResponseMessage.Embeds[0]).AsAwaitingInput(this.ctx)).AddComponents(dropdown).WithContent(this.ctx.ResponseMessage.Content);
var builder = new DiscordMessageBuilder().AddEmbed(new DiscordEmbedBuilder(this.ctx.ResponseMessage.Embeds[0]).AsAwaitingInput(this.ctx)).AddComponents(dropdown).WithContent(this.ctx.ResponseMessage.Content);
if (Selected.IsNullOrWhiteSpace())
_ = ConfirmSelectionButton.Disable();
@ -662,7 +668,7 @@ public abstract class BaseCommand
}
this.ctx.Client.ComponentInteractionCreated -= RunInteraction;
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(this.ctx.ResponseMessage.Embeds[0]).WithContent(this.ctx.ResponseMessage.Content));
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(this.ctx.ResponseMessage.Embeds[0]).WithContent(this.ctx.ResponseMessage.Content));
if (ExceptionOccurred)
return new InteractionResult<DiscordChannel>(ThrownException);
@ -707,7 +713,7 @@ public abstract class BaseCommand
async Task RefreshMessage()
{
var dropdown = new DiscordStringSelectComponent(CustomPlaceHolder, options.Skip(CurrentPage * 25).Take(25).Select(x => new DiscordStringSelectComponentOption(x.Label, x.Value, x.Description, (x.Value == Selected), x.Emoji)), SelectionInteractionId);
var builder = new DiscordMessageBuilder().WithEmbed(new DiscordEmbedBuilder(this.ctx.ResponseMessage.Embeds[0]).AsAwaitingInput(this.ctx)).AddComponents(dropdown).WithContent(this.ctx.ResponseMessage.Content);
var builder = new DiscordMessageBuilder().AddEmbed(new DiscordEmbedBuilder(this.ctx.ResponseMessage.Embeds[0]).AsAwaitingInput(this.ctx)).AddComponents(dropdown).WithContent(this.ctx.ResponseMessage.Content);
_ = NextPageButton.SetState(options.Skip(CurrentPage * 25).Count() <= 25);
_ = PrevPageButton.SetState(CurrentPage == 0);
@ -784,7 +790,7 @@ public abstract class BaseCommand
this.ctx.Client.ComponentInteractionCreated -= RunInteraction;
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(this.ctx.ResponseMessage.Embeds[0]).WithContent(this.ctx.ResponseMessage.Content));
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(this.ctx.ResponseMessage.Embeds[0]).WithContent(this.ctx.ResponseMessage.Content));
if (ExceptionOccurred)
return new InteractionResult<string>(ThrownException);
@ -807,7 +813,7 @@ public abstract class BaseCommand
var ReOpen = new DiscordButtonComponent(ButtonStyle.Primary, Guid.NewGuid().ToString(), this.GetString(this.t.Commands.Common.Prompts.ReOpenModal), false, new DiscordComponentEmoji(DiscordEmoji.FromUnicode("🔄")));
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(customEmbed ?? new DiscordEmbedBuilder
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(customEmbed ?? new DiscordEmbedBuilder
{
Description = this.GetString(this.t.Commands.Common.Prompts.WaitingForModalResponse, true)
}.AsAwaitingInput(this.ctx)).AddComponents(new List<DiscordComponent> { ReOpen, MessageComponents.GetCancelButton(this.ctx.DbUser, this.ctx.Bot) }));
@ -872,7 +878,7 @@ public abstract class BaseCommand
this.ctx.Client.ComponentInteractionCreated -= RunInteraction;
if (ResetToOriginalEmbed)
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(oriEmbed));
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(oriEmbed));
if (ExceptionOccurred)
return new InteractionResult<ComponentInteractionCreateEventArgs>(ThrownException);
@ -1445,7 +1451,7 @@ public abstract class BaseCommand
{
if (this.ctx.DbUser.PendingUserUpload.TimeOut.GetTotalSecondsUntil() > 0 && !this.ctx.DbUser.PendingUserUpload.InteractionHandled)
{
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(new DiscordEmbedBuilder
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(new DiscordEmbedBuilder
{
Description = $"`An upload interaction is already taking place. Please finish it beforehand.`",
}.AsError(this.ctx)));
@ -1479,7 +1485,7 @@ public abstract class BaseCommand
#region FinishInteraction
public void ModifyToTimedOut(bool Delete = false)
{
_ = this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(new DiscordEmbedBuilder(this.ctx.ResponseMessage.Embeds[0]).WithFooter(this.ctx.ResponseMessage.Embeds[0]?.Footer?.Text + $" • {this.GetString(this.t.Commands.Common.InteractionTimeout)}").WithColor(DiscordColor.Gray)));
_ = this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(new DiscordEmbedBuilder(this.ctx.ResponseMessage.Embeds[0]).WithFooter(this.ctx.ResponseMessage.Embeds[0]?.Footer?.Text + $" • {this.GetString(this.t.Commands.Common.InteractionTimeout)}").WithColor(DiscordColor.Gray)));
if (Delete)
_ = Task.Delay(5000).ContinueWith(_ =>
@ -1635,19 +1641,19 @@ public abstract class BaseCommand
}.AsError(this.ctx));
public void SendVoiceStateError()
=> _ = this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(new DiscordEmbedBuilder
=> _ = this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(new DiscordEmbedBuilder
{
Description = this.GetString(this.t.Commands.Common.Errors.VoiceChannel).Build(true),
}.AsError(this.ctx)));
public void SendUserBanError(BanDetails entry)
=> _ = this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(new DiscordEmbedBuilder
=> _ = this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(new DiscordEmbedBuilder
{
Description = this.t.Commands.Common.Errors.UserBan.t["en"].Build(true, new TVar("Reason", entry.Reason)),
}.AsError(this.ctx)));
public void SendGuildBanError(BanDetails entry)
=> _ = this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(new DiscordEmbedBuilder
=> _ = this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(new DiscordEmbedBuilder
{
Description = this.GetString(this.t.Commands.Common.Errors.GuildBan, true, new TVar("Reason", entry.Reason)),
}.AsError(this.ctx)));
@ -1667,20 +1673,20 @@ public abstract class BaseCommand
};
public void SendDataError()
=> _ = this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(new DiscordEmbedBuilder
=> _ = this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(new DiscordEmbedBuilder
{
Description = this.GetString(this.t.Commands.Common.Errors.Data, true, new TVar("Command", $"{this.ctx.Prefix}data delete")),
}.AsError(this.ctx)));
public void SendDmError()
=> _ = this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(new DiscordEmbedBuilder
=> _ = this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(new DiscordEmbedBuilder
{
Description = $"📩 {this.GetString(this.t.Commands.Common.Errors.DirectMessage, true)}",
ImageUrl = (this.ctx.User.Presence.ClientStatus.Mobile.HasValue ? "https://cdn.discordapp.com/attachments/1005430437952356423/1144961395515998238/34rhz83ghtzu3ght.gif" : "https://cdn.discordapp.com/attachments/1005430437952356423/1144964670197862400/et2grtzu2ghrzi52.gif")
}.AsError(this.ctx)));
public void SendDmRedirect()
=> _ = this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(new DiscordEmbedBuilder
=> _ = this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(new DiscordEmbedBuilder
{
Description = $"📩 {this.GetString(this.t.Commands.Common.DirectMessageRedirect, true)}",
}.AsSuccess(this.ctx)));
@ -1708,7 +1714,7 @@ public abstract class BaseCommand
Description = $"**`{ctx.Prefix}{ctx.Command.Name}{(ctx.RawArgumentString != "" ? $" {ctx.RawArgumentString.SanitizeForCode().Replace("\\", "")}" : "")}` is not a valid way of using this command.**\nUse it like this instead: `{ctx.Prefix}{ctx.Command.GenerateUsage()}`\n\nArguments wrapped in `[]` are optional while arguments wrapped in `<>` are required.\n**Do not include the brackets when using commands, they're merely an indicator for requirement.**",
}.AsError(this.ctx);
_ = this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(embed).WithContent(this.ctx.User.Mention));
_ = this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(embed).WithContent(this.ctx.User.Mention));
}
#endregion
}

View file

@ -60,7 +60,7 @@ internal sealed class ActionLogCommand : BaseCommand
var ChangeChannel = new DiscordButtonComponent(ButtonStyle.Primary, Guid.NewGuid().ToString(), $"{(ctx.DbGuild.ActionLog.Channel == 0 ? this.GetString(CommandKey.SetChannelButton) : this.GetString(CommandKey.ChangeChannelButton))}", false, new DiscordComponentEmoji(DiscordEmoji.FromUnicode("💬")));
var ChangeFilter = new DiscordButtonComponent(ButtonStyle.Primary, Guid.NewGuid().ToString(), this.GetString(CommandKey.ChangeFilterButton), (ctx.DbGuild.ActionLog.Channel == 0), new DiscordComponentEmoji(DiscordEmoji.FromUnicode("📣")));
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(embed)
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(embed)
.AddComponents(new List<DiscordComponent>
{
{ Disable }
@ -153,7 +153,7 @@ internal sealed class ActionLogCommand : BaseCommand
new(this.GetString(CommandKey.InviteModifications), "log_invites_modified", null, ctx.DbGuild.ActionLog.InvitesModified, new DiscordComponentEmoji(EmojiTemplates.GetInvite(ctx.Bot))),
};
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(embed).AddComponents(new DiscordStringSelectComponent(this.GetString(CommandKey.NoOptions), Selections, Guid.NewGuid().ToString(), 0, Selections.Count, false)));
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(embed).AddComponents(new DiscordStringSelectComponent(this.GetString(CommandKey.NoOptions), Selections, Guid.NewGuid().ToString(), 0, Selections.Count, false)));
var e = await ctx.Client.GetInteractivity().WaitForSelectAsync(ctx.ResponseMessage, x => x.User.Id == ctx.User.Id, ComponentType.StringSelect, TimeSpan.FromMinutes(2));

View file

@ -47,7 +47,7 @@ internal sealed class AutoCrosspostCommand : BaseCommand
var AddButton = new DiscordButtonComponent(ButtonStyle.Primary, Guid.NewGuid().ToString(), this.GetString(CommandKey.AddChannelButton), false, new DiscordComponentEmoji(DiscordEmoji.FromUnicode("")));
var RemoveButton = new DiscordButtonComponent(ButtonStyle.Danger, Guid.NewGuid().ToString(), this.GetString(CommandKey.RemoveChannelButton), false, new DiscordComponentEmoji(DiscordEmoji.FromUnicode("✖")));
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(embed)
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(embed)
.AddComponents(new List<DiscordComponent>
{
ExcludeBots,
@ -96,7 +96,7 @@ internal sealed class AutoCrosspostCommand : BaseCommand
{
if (ModalResult.Exception.GetType() == typeof(InvalidOperationException))
{
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(embed.WithDescription(this.GetString(CommandKey.DurationLimit, true)).AsError(ctx, this.GetString(CommandKey.Title))));
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(embed.WithDescription(this.GetString(CommandKey.DurationLimit, true)).AsError(ctx, this.GetString(CommandKey.Title))));
await Task.Delay(5000);
await this.ExecuteCommand(ctx, arguments);
return;
@ -123,7 +123,7 @@ internal sealed class AutoCrosspostCommand : BaseCommand
{
embed.Description = this.GetString(CommandKey.ChannelLimit, true, new TVar("Invite", ctx.Bot.status.DevelopmentServerInvite));
embed = embed.AsError(ctx, this.GetString(CommandKey.Title));
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(embed));
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(embed));
await Task.Delay(5000);
await this.ExecuteCommand(ctx, arguments);
return;
@ -156,7 +156,7 @@ internal sealed class AutoCrosspostCommand : BaseCommand
if (ChannelResult.Result.Type != ChannelType.News)
{
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(embed.WithDescription(this.GetString(this.t.Commands.Common.Errors.NoChannels, true)).AsError(ctx, this.GetString(CommandKey.Title))));
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(embed.WithDescription(this.GetString(this.t.Commands.Common.Errors.NoChannels, true)).AsError(ctx, this.GetString(CommandKey.Title))));
await Task.Delay(5000);
await this.ExecuteCommand(ctx, arguments);
return;

View file

@ -41,7 +41,7 @@ internal sealed class AutoUnarchiveCommand : BaseCommand
var Add = new DiscordButtonComponent(ButtonStyle.Success, Guid.NewGuid().ToString(), this.GetString(CommandKey.AddChannelButton), false, new DiscordComponentEmoji(DiscordEmoji.FromUnicode("")));
var Remove = new DiscordButtonComponent(ButtonStyle.Danger, Guid.NewGuid().ToString(), this.GetString(CommandKey.RemoveChannelButton), false, new DiscordComponentEmoji(DiscordEmoji.FromUnicode("✖")));
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(embed)
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(embed)
.AddComponents(new List<DiscordComponent>
{
Add,

View file

@ -42,7 +42,7 @@ internal sealed class BumpReminderCommand : BaseCommand
var ChangeChannel = new DiscordButtonComponent(ButtonStyle.Primary, Guid.NewGuid().ToString(), this.GetString(CommandKey.ChangeChannelButton), ctx.DbGuild.BumpReminder.ChannelId == 0, new DiscordComponentEmoji(DiscordEmoji.FromUnicode("💬")));
var ChangeRole = new DiscordButtonComponent(ButtonStyle.Primary, Guid.NewGuid().ToString(), this.GetString(CommandKey.ChangeRoleButton), ctx.DbGuild.BumpReminder.ChannelId == 0, new DiscordComponentEmoji(DiscordEmoji.FromUnicode("👤")));
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(new DiscordEmbedBuilder()
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(new DiscordEmbedBuilder()
.WithDescription(GetCurrentConfiguration(ctx)).AsAwaitingInput(ctx, this.GetString(CommandKey.Title)))
.AddComponents(new List<DiscordComponent>
{

View file

@ -40,7 +40,7 @@ internal sealed class EmbedMessageCommand : BaseCommand
var ToggleMsg = new DiscordButtonComponent((ctx.DbGuild.EmbedMessage.UseEmbedding ? ButtonStyle.Danger : ButtonStyle.Success), Guid.NewGuid().ToString(), this.GetString(CommandKey.ToggleMessageLinkButton), false, new DiscordComponentEmoji(DiscordEmoji.FromUnicode("💬")));
var ToggleGithub = new DiscordButtonComponent((ctx.DbGuild.EmbedMessage.UseGithubEmbedding ? ButtonStyle.Danger : ButtonStyle.Success), Guid.NewGuid().ToString(), this.GetString(CommandKey.ToggleGithubCodeButton), false, new DiscordComponentEmoji(DiscordEmoji.FromUnicode("🤖")));
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(embed)
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(embed)
.AddComponents(new List<DiscordComponent>
{
ToggleMsg,

View file

@ -37,7 +37,7 @@ internal sealed class ExperienceCommand : BaseCommand
Description = GetCurrentConfiguration(ctx)
}.AsAwaitingInput(ctx, this.GetString(CommandKey.Title));
var builder = new DiscordMessageBuilder().WithEmbed(embed);
var builder = new DiscordMessageBuilder().AddEmbed(embed);
var ToggleExperienceSystem = new DiscordButtonComponent((ctx.DbGuild.Experience.UseExperience ? ButtonStyle.Danger : ButtonStyle.Success), Guid.NewGuid().ToString(), this.GetString(CommandKey.ToggleExperienceButton), false, new DiscordComponentEmoji(DiscordEmoji.FromUnicode("✨")));
var ToggleBumperBoost = new DiscordButtonComponent((ctx.DbGuild.Experience.BoostXpForBumpReminder ? ButtonStyle.Danger : ButtonStyle.Success), Guid.NewGuid().ToString(), this.GetString(CommandKey.ToggleExperienceBoostButton), false, new DiscordComponentEmoji(DiscordEmoji.FromUnicode("⏫")));

View file

@ -40,7 +40,7 @@ internal sealed class InVoicePrivacyCommand : BaseCommand
var ToggleDeletion = new DiscordButtonComponent((ctx.DbGuild.InVoiceTextPrivacy.ClearTextEnabled ? ButtonStyle.Danger : ButtonStyle.Success), Guid.NewGuid().ToString(), this.GetString(CommandKey.ToggleMessageDeletionButton), false, new DiscordComponentEmoji(DiscordEmoji.FromUnicode("🗑")));
var TogglePermission = new DiscordButtonComponent((ctx.DbGuild.InVoiceTextPrivacy.SetPermissionsEnabled ? ButtonStyle.Danger : ButtonStyle.Success), Guid.NewGuid().ToString(), this.GetString(CommandKey.TogglePermissionProtectionButton), false, new DiscordComponentEmoji(DiscordEmoji.FromUnicode("📋")));
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(embed)
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(embed)
.AddComponents(new List<DiscordComponent>
{
ToggleDeletion,

View file

@ -39,7 +39,7 @@ internal sealed class InviteNotesCommand : BaseCommand
if (!(ctx.DbGuild.InviteNotes.Notes.Length > 19))
{
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(embed)
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(embed)
.AddComponents(new List<DiscordComponent>
{
AddButton,
@ -48,7 +48,7 @@ internal sealed class InviteNotesCommand : BaseCommand
}
else
{
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(embed)
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(embed)
.AddComponents(new List<DiscordComponent> { RemoveButton }).AddComponents(MessageComponents.GetCancelButton(ctx.DbUser, ctx.Bot)));
}
@ -81,7 +81,7 @@ internal sealed class InviteNotesCommand : BaseCommand
$"`{this.GetString(CommandKey.Invite).PadRight(pad)}`: `{(SelectedInvite is null ? this.GetString(this.t.Common.NotSelected) : $"{SelectedInvite.Code}")}`"
}.AsAwaitingInput(ctx, this.GetString(CommandKey.Title));
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(embed)
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(embed)
.AddComponents(new List<DiscordComponent> { SelectTextButton, SelectInviteButton, Finish })
.AddComponents(MessageComponents.GetCancelButton(ctx.DbUser, ctx.Bot)));

View file

@ -34,7 +34,7 @@ internal sealed class InviteTrackerCommand : BaseCommand
var Toggle = new DiscordButtonComponent((ctx.DbGuild.InviteTracker.Enabled ? ButtonStyle.Danger : ButtonStyle.Success), Guid.NewGuid().ToString(), this.GetString(CommandKey.ToggleInviteTrackerButton), false, new DiscordComponentEmoji(DiscordEmoji.FromUnicode("📲")));
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(embed)
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(embed)
.AddComponents(new List<DiscordComponent>
{
Toggle

View file

@ -26,6 +26,8 @@ internal sealed class JoinCommand : BaseCommand
var pad = TranslationUtil.CalculatePadding(ctx.DbUser,
CommandKey.Autoban,
CommandKey.JoinLogChannel,
CommandKey.UserCountChannel,
CommandKey.UserCountChannelFormat,
CommandKey.Role,
CommandKey.ReApplyRoles,
CommandKey.ReApplyNickname,
@ -35,6 +37,7 @@ internal sealed class JoinCommand : BaseCommand
return $"{"🌐".UnicodeToEmoji()} `{CommandKey.Autoban.Get(ctx.DbUser).PadRight(pad)}`: {ctx.DbGuild.Join.AutoBanGlobalBans.ToEmote(ctx.Bot)}\n" +
$"{"👋".UnicodeToEmoji()} `{CommandKey.JoinLogChannel.Get(ctx.DbUser).PadRight(pad)}`: {(ctx.DbGuild.Join.JoinlogChannelId != 0 ? $"<#{ctx.DbGuild.Join.JoinlogChannelId}>" : false.ToEmote(ctx.Bot))}\n" +
$"{"🔢".UnicodeToEmoji()} `{CommandKey.UserCountChannel.Get(ctx.DbUser).PadRight(pad)}`: {(ctx.DbGuild.Join.UserCountChannelId != 0 ? $"<#{ctx.DbGuild.Join.UserCountChannelId}> (`{(ctx.DbGuild.Join.UserCountChannelFormat is not null ? ctx.DbGuild.Join.UserCountChannelFormat : "Users: %s")}`)" : false.ToEmote(ctx.Bot))}\n" +
$"{"👤".UnicodeToEmoji()} `{CommandKey.Role.Get(ctx.DbUser).PadRight(pad)}`: {(ctx.DbGuild.Join.AutoAssignRoleId != 0 ? $"<@&{ctx.DbGuild.Join.AutoAssignRoleId}>" : false.ToEmote(ctx.Bot))}\n" +
$"{"👥".UnicodeToEmoji()} `{CommandKey.ReApplyRoles.Get(ctx.DbUser).PadRight(pad)}`: {ctx.DbGuild.Join.ReApplyRoles.ToEmote(ctx.Bot)}\n" +
$"{"💬".UnicodeToEmoji()} `{CommandKey.ReApplyNickname.Get(ctx.DbUser).PadRight(pad)}`: {ctx.DbGuild.Join.ReApplyNickname.ToEmote(ctx.Bot)}\n\n" +
@ -53,10 +56,12 @@ internal sealed class JoinCommand : BaseCommand
Description = GetCurrentConfiguration(ctx)
}.AsAwaitingInput(ctx, this.GetString(CommandKey.Title));
var builder = new DiscordMessageBuilder().WithEmbed(embed);
var builder = new DiscordMessageBuilder().AddEmbed(embed);
var ToggleGlobalban = new DiscordButtonComponent((ctx.DbGuild.Join.AutoBanGlobalBans ? ButtonStyle.Danger : ButtonStyle.Success), Guid.NewGuid().ToString(), this.GetString(CommandKey.ToggleGlobalBansButton), false, new DiscordComponentEmoji(DiscordEmoji.FromUnicode("🌐")));
var ChangeJoinlogChannel = new DiscordButtonComponent(ButtonStyle.Primary, Guid.NewGuid().ToString(), this.GetString(CommandKey.ChangeJoinlogChannelButton), false, new DiscordComponentEmoji(DiscordEmoji.FromUnicode("👋")));
var ChangeUserCountChannel = new DiscordButtonComponent(ButtonStyle.Primary, Guid.NewGuid().ToString(), this.GetString(CommandKey.ChangeUserCountChannel), false, new DiscordComponentEmoji(DiscordEmoji.FromUnicode("🔢")));
var ChangeUserCountFormat = new DiscordButtonComponent(ButtonStyle.Primary, Guid.NewGuid().ToString(), this.GetString(CommandKey.ChangeUserCountChannelFormat), ctx.DbGuild.Join.UserCountChannelId == 0, new DiscordComponentEmoji(DiscordEmoji.FromUnicode("🔢")));
var ChangeRoleOnJoin = new DiscordButtonComponent(ButtonStyle.Primary, Guid.NewGuid().ToString(), this.GetString(CommandKey.ChangeRoleButton), false, new DiscordComponentEmoji(DiscordEmoji.FromUnicode("👤")));
var ToggleReApplyRoles = new DiscordButtonComponent((ctx.DbGuild.Join.ReApplyRoles ? ButtonStyle.Danger : ButtonStyle.Success), Guid.NewGuid().ToString(), this.GetString(CommandKey.ToggleReApplyRole), false, new DiscordComponentEmoji(DiscordEmoji.FromUnicode("👥")));
var ToggleReApplyName = new DiscordButtonComponent((ctx.DbGuild.Join.ReApplyNickname ? ButtonStyle.Danger : ButtonStyle.Success), Guid.NewGuid().ToString(), this.GetString(CommandKey.ToggleReApplyNickname), false, new DiscordComponentEmoji(DiscordEmoji.FromUnicode("💬")));
@ -76,6 +81,8 @@ internal sealed class JoinCommand : BaseCommand
{
ChangeJoinlogChannel,
ChangeRoleOnJoin,
ChangeUserCountChannel,
ChangeUserCountFormat,
})
.AddComponents(new List<DiscordComponent>
{
@ -93,6 +100,7 @@ internal sealed class JoinCommand : BaseCommand
return;
}
if (e.GetCustomId() != ChangeUserCountFormat.CustomId)
_ = e.Result.Interaction.CreateResponseAsync(InteractionResponseType.DeferredMessageUpdate);
if (e.GetCustomId() == ToggleGlobalban.CustomId)
@ -156,6 +164,87 @@ internal sealed class JoinCommand : BaseCommand
await this.ExecuteCommand(ctx, arguments);
return;
}
else if (e.GetCustomId() == ChangeUserCountChannel.CustomId)
{
var ChannelResult = await this.PromptChannelSelection(ChannelType.Text, new ChannelPromptConfiguration
{
CreateChannelOption = new()
{
Name = "tmp-usercount",
ChannelType = ChannelType.Text
},
DisableOption = this.GetString(CommandKey.DisableUserCountChannel)
});
if (ChannelResult.TimedOut)
{
this.ModifyToTimedOut(true);
return;
}
else if (ChannelResult.Cancelled)
{
await this.ExecuteCommand(ctx, arguments);
return;
}
else if (ChannelResult.Failed)
{
if (ChannelResult.Exception.GetType() == typeof(NullReferenceException))
{
_ = await this.RespondOrEdit(new DiscordEmbedBuilder().AsError(ctx).WithDescription(this.GetString(this.t.Commands.Common.Errors.NoChannels)));
await Task.Delay(3000);
await this.ExecuteCommand(ctx, arguments);
return;
}
throw ChannelResult.Exception;
}
ctx.DbGuild.Join.UserCountChannelId = ChannelResult.Result is null ? 0 : ChannelResult.Result.Id;
if (ChannelResult.Result is not null)
await JoinEvents.RunUserCountUpdater(ctx.Bot, ctx.Guild);
await this.ExecuteCommand(ctx, arguments);
return;
}
else if (e.GetCustomId() == ChangeUserCountFormat.CustomId)
{
var modelResult = await this.PromptModalWithRetry(e.Result.Interaction,
new DiscordInteractionModalBuilder(this.GetString(CommandKey.ChangeUserCountChannelFormat))
.AddTextComponent(new DiscordTextComponent(TextComponentStyle.Small, "new_format", this.GetString(CommandKey.ChangeUserCountChannelFormatModal), null, 2, 16)),
false);
if (modelResult.TimedOut)
{
this.ModifyToTimedOut(true);
return;
}
else if (modelResult.Cancelled)
{
await this.ExecuteCommand(ctx, arguments);
return;
}
else if (modelResult.Failed)
{
if (modelResult.Exception.GetType() == typeof(NullReferenceException))
{
_ = await this.RespondOrEdit(new DiscordEmbedBuilder().AsError(ctx).WithDescription(this.GetString(this.t.Commands.Common.Errors.NoChannels)));
await Task.Delay(3000);
await this.ExecuteCommand(ctx, arguments);
return;
}
throw modelResult.Exception;
}
ctx.DbGuild.Join.UserCountChannelFormat = modelResult.Result.Interaction.GetModalValueByCustomId("new_format");
if (ctx.DbGuild.Join.UserCountChannelId != 0)
await JoinEvents.RunUserCountUpdater(ctx.Bot, ctx.Guild);
await this.ExecuteCommand(ctx, arguments);
return;
}
else if (e.GetCustomId() == ChangeRoleOnJoin.CustomId)
{
var RoleResult = await this.PromptRoleSelection(new RolePromptConfiguration { CreateRoleOption = this.GetString(CommandKey.AutoAssignRoleName), DisableOption = this.GetString(CommandKey.DisableRoleOnJoin) });

View file

@ -112,7 +112,7 @@ internal sealed class LevelRewardsCommand : BaseCommand
var Dropdown = new DiscordStringSelectComponent(this.GetString(CommandKey.SelectDropdown), DefinedRewards.Skip(CurrentPage * 20).Take(20).ToList(), "RewardSelection");
embed = embed.AsAwaitingInput(ctx, this.GetString(CommandKey.Title));
var builder = new DiscordMessageBuilder().WithEmbed(embed);
var builder = new DiscordMessageBuilder().AddEmbed(embed);
if (DefinedRewards.Count > 0)
_ = builder.AddComponents(Dropdown);
@ -196,7 +196,7 @@ internal sealed class LevelRewardsCommand : BaseCommand
$"`{this.GetString(CommandKey.Message).PadRight(pad)}`: `{selectedCustomText}`"
}.AsAwaitingInput(ctx, this.GetString(CommandKey.Title));
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(action_embed)
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(action_embed)
.AddComponents(new List<DiscordComponent> { SelectRole, SelectLevel, SelectCustomText, Finish })
.AddComponents(MessageComponents.GetCancelButton(ctx.DbUser, ctx.Bot)));
@ -316,7 +316,7 @@ internal sealed class LevelRewardsCommand : BaseCommand
if (newMessage.Length > 256)
{
action_embed.Description = this.GetString(CommandKey.MessageTooLong, true);
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(action_embed.AsError(ctx, this.GetString(CommandKey.Title))));
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(action_embed.AsError(ctx, this.GetString(CommandKey.Title))));
await Task.Delay(3000);
continue;
}
@ -342,7 +342,7 @@ internal sealed class LevelRewardsCommand : BaseCommand
});
action_embed.Description = this.GetString(CommandKey.AddedNewReward, true, new TVar("Role", $"<@&{selectedRole.Id}>"), new TVar("Level", selectedLevel));
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(action_embed.AsSuccess(ctx, this.GetString(CommandKey.Title))));
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(action_embed.AsSuccess(ctx, this.GetString(CommandKey.Title))));
await Task.Delay(5000);
await RefreshMessage();
@ -391,7 +391,7 @@ internal sealed class LevelRewardsCommand : BaseCommand
if (result.Length > 256)
{
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(embed.WithDescription(this.GetString(CommandKey.MessageTooLong, true)).AsError(ctx, this.GetString(CommandKey.Title))));
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(embed.WithDescription(this.GetString(CommandKey.MessageTooLong, true)).AsError(ctx, this.GetString(CommandKey.Title))));
await Task.Delay(5000);
await this.ExecuteCommand(ctx, arguments);
return;

View file

@ -35,7 +35,7 @@ internal sealed class NameNormalizerCommand : BaseCommand
var Toggle = new DiscordButtonComponent((ctx.DbGuild.NameNormalizer.NameNormalizerEnabled ? ButtonStyle.Danger : ButtonStyle.Success), Guid.NewGuid().ToString(), this.GetString(CommandKey.ToggleNameNormalizer), false, new DiscordComponentEmoji(DiscordEmoji.FromUnicode("💬")));
var SearchAllNames = new DiscordButtonComponent(ButtonStyle.Danger, Guid.NewGuid().ToString(), this.GetString(CommandKey.NormalizeNow), false, new DiscordComponentEmoji(DiscordEmoji.FromUnicode("🔨")));
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(embed)
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(embed)
.AddComponents(new List<DiscordComponent>
{
Toggle,
@ -64,7 +64,7 @@ internal sealed class NameNormalizerCommand : BaseCommand
{
if (ctx.DbGuild.NameNormalizer.NameNormalizerRunning)
{
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(embed.AsError(ctx, this.GetString(CommandKey.Title))
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(embed.AsError(ctx, this.GetString(CommandKey.Title))
.WithDescription(this.GetString(CommandKey.NormalizerRunning, true))));
await Task.Delay(5000);
await this.ExecuteCommand(ctx, arguments);
@ -78,7 +78,7 @@ internal sealed class NameNormalizerCommand : BaseCommand
try
{
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(embed.AsLoading(ctx, this.GetString(CommandKey.Title))
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(embed.AsLoading(ctx, this.GetString(CommandKey.Title))
.WithDescription(this.GetString(CommandKey.RenamingAllMembers, true))));
var members = await ctx.Guild.GetAllMembersAsync();
@ -101,7 +101,7 @@ internal sealed class NameNormalizerCommand : BaseCommand
}
}
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(embed.AsSuccess(ctx, this.GetString(CommandKey.Title))
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(embed.AsSuccess(ctx, this.GetString(CommandKey.Title))
.WithDescription(this.GetString(CommandKey.RenamedMembers, true, new TVar("Count", Renamed)))));
await Task.Delay(5000);
ctx.DbGuild.NameNormalizer.NameNormalizerRunning = false;

View file

@ -73,7 +73,7 @@ internal sealed class PhishingCommand : BaseCommand
var ChangeReasonButton = new DiscordButtonComponent(ButtonStyle.Secondary, Guid.NewGuid().ToString(), this.GetString(CommandKey.ChangePunishmentReason), false, new DiscordComponentEmoji(DiscordEmoji.FromUnicode("💬")));
var ChangeTimeoutLengthButton = new DiscordButtonComponent(ButtonStyle.Secondary, Guid.NewGuid().ToString(), this.GetString(CommandKey.ChangeTimeoutLength), false, new DiscordComponentEmoji(DiscordEmoji.FromUnicode("🕒")));
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(embed)
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(embed)
.AddComponents(new List<DiscordComponent>
{
{ ToggleDetectionButton },
@ -188,7 +188,7 @@ internal sealed class PhishingCommand : BaseCommand
{
if (ctx.DbGuild.PhishingDetection.PunishmentType != PhishingPunishmentType.Timeout)
{
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(embed.WithDescription(this.GetString(CommandKey.NotUsingType, true, new TVar("Type", this.GetString(CommandKey.PunishmentTypeTimeout))))));
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(embed.WithDescription(this.GetString(CommandKey.NotUsingType, true, new TVar("Type", this.GetString(CommandKey.PunishmentTypeTimeout))))));
await Task.Delay(5000);
await this.ExecuteCommand(ctx, arguments);
return;
@ -211,7 +211,7 @@ internal sealed class PhishingCommand : BaseCommand
{
if (ModalResult.Exception.GetType() == typeof(InvalidOperationException))
{
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(embed.WithDescription(this.GetString(CommandKey.InvalidDuration, true)).AsError(ctx, this.GetString(CommandKey.Title))));
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(embed.WithDescription(this.GetString(CommandKey.InvalidDuration, true)).AsError(ctx, this.GetString(CommandKey.Title))));
await Task.Delay(5000);
await this.ExecuteCommand(ctx, arguments);
return;

View file

@ -36,7 +36,7 @@ internal sealed class PrefixCommand : BaseCommand
var TogglePrefixCommands = new DiscordButtonComponent((ctx.DbGuild.PrefixSettings.PrefixDisabled ? ButtonStyle.Danger : ButtonStyle.Success), Guid.NewGuid().ToString(), this.GetString(this.t.Commands.Config.PrefixConfigCommand.TogglePrefixCommands), false, new DiscordComponentEmoji(DiscordEmoji.FromUnicode("⌨")));
var ChangePrefix = new DiscordButtonComponent(ButtonStyle.Secondary, Guid.NewGuid().ToString(), this.GetString(this.t.Commands.Config.PrefixConfigCommand.ChangePrefix), false, new DiscordComponentEmoji(DiscordEmoji.FromUnicode("🗝")));
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(embed)
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(embed)
.AddComponents(new List<DiscordComponent>
{
{ TogglePrefixCommands },

View file

@ -78,7 +78,7 @@ internal sealed class AddCommand : BaseCommand
case Enums.CommandType.ContextMenu:
{
embed.Description = this.GetString(CommandKey.SelectRolePrompt, true);
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(embed.AsAwaitingInput(ctx, this.GetString(CommandKey.Title))));
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(embed.AsAwaitingInput(ctx, this.GetString(CommandKey.Title))));
var RoleResult = await this.PromptRoleSelection();
if (RoleResult.TimedOut)
@ -122,7 +122,7 @@ internal sealed class AddCommand : BaseCommand
case Enums.CommandType.ContextMenu:
{
embed.Description = this.GetString(CommandKey.ReactWithEmoji, true);
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(embed.AsAwaitingInput(ctx, this.GetString(CommandKey.Title))));
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(embed.AsAwaitingInput(ctx, this.GetString(CommandKey.Title))));
var emoji_wait = await ctx.Client.GetInteractivity().WaitForReactionAsync(x => x.Channel.Id == ctx.Channel.Id && x.User.Id == ctx.User.Id && x.Message.Id == message.Id, TimeSpan.FromMinutes(2));
@ -141,7 +141,7 @@ internal sealed class AddCommand : BaseCommand
if (emoji_parameter.Id != 0 && !ctx.Guild.Emojis.ContainsKey(emoji_parameter.Id))
{
embed.Description = this.GetString(CommandKey.NoAccessToEmoji);
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(embed.AsError(ctx, this.GetString(CommandKey.Title))));
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(embed.AsError(ctx, this.GetString(CommandKey.Title))));
return;
}
@ -157,28 +157,28 @@ internal sealed class AddCommand : BaseCommand
if (ctx.DbGuild.ReactionRoles.Length > 100)
{
embed.Description = this.GetString(CommandKey.ReactionRoleLimitReached, true);
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(embed.AsError(ctx, this.GetString(CommandKey.Title))));
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(embed.AsError(ctx, this.GetString(CommandKey.Title))));
return;
}
if (emoji_parameter.Id != 0 && !ctx.Guild.Emojis.ContainsKey(emoji_parameter.Id))
{
embed.Description = this.GetString(CommandKey.NoAccessToEmoji, true);
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(embed.AsError(ctx, this.GetString(CommandKey.Title))));
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(embed.AsError(ctx, this.GetString(CommandKey.Title))));
return;
}
if (ctx.DbGuild.ReactionRoles.Any(x => (x.MessageId == message.Id && x.EmojiName == emoji_parameter.GetUniqueDiscordName())))
{
embed.Description = this.GetString(CommandKey.EmojiAlreadyUsed, true);
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(embed.AsError(ctx, this.GetString(CommandKey.Title))));
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(embed.AsError(ctx, this.GetString(CommandKey.Title))));
return;
}
if (ctx.DbGuild.ReactionRoles.Any(x => x.RoleId == role_parameter.Id))
{
embed.Description = this.GetString(CommandKey.RoleAlreadyUsed, true);
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(embed.AsError(ctx, this.GetString(CommandKey.Title))));
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(embed.AsError(ctx, this.GetString(CommandKey.Title))));
return;
}
@ -198,7 +198,7 @@ internal sealed class AddCommand : BaseCommand
new TVar("User", message.Author.Mention),
new TVar("Channel", message.Channel.Mention),
new TVar("Emoji", emoji_parameter));
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(embed.AsSuccess(ctx, this.GetString(CommandKey.Title))));
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(embed.AsSuccess(ctx, this.GetString(CommandKey.Title))));
});
}
}

View file

@ -37,7 +37,7 @@ internal sealed class ConfigCommand : BaseCommand
Description = this.GetString(CommandKey.ReactionRoleCount, true, new TVar("Count", ctx.DbGuild.ReactionRoles.Length))
}.AsAwaitingInput(ctx, this.GetString(CommandKey.Title));
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(embed)
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(embed)
.AddComponents(new List<DiscordComponent>
{
AddButton, RemoveButton
@ -80,13 +80,13 @@ internal sealed class ConfigCommand : BaseCommand
if (ctx.DbGuild.ReactionRoles.Length > 100)
{
action_embed.Description = this.GetString(CommandKey.ReactionRoleLimitReached, true);
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(action_embed.AsError(ctx, this.GetString(CommandKey.Title))));
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(action_embed.AsError(ctx, this.GetString(CommandKey.Title))));
await Task.Delay(5000);
await this.ExecuteCommand(ctx, arguments);
return;
}
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(action_embed)
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(action_embed)
.AddComponents(new List<DiscordComponent> { SelectMessage, SelectEmoji, SelectRole, Finish })
.AddComponents(MessageComponents.GetCancelButton(ctx.DbUser, ctx.Bot)));
@ -132,7 +132,7 @@ internal sealed class ConfigCommand : BaseCommand
$"`https://ptb.discord.com/channels/012345678901234567/012345678901234567/012345678912345678`\n" +
$"`https://canary.discord.com/channels/012345678901234567/012345678901234567/012345678912345678`";
action_embed.ImageUrl = "";
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(action_embed.AsError(ctx, this.GetString(CommandKey.Title))));
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(action_embed.AsError(ctx, this.GetString(CommandKey.Title))));
await Task.Delay(3000);
continue;
}
@ -141,7 +141,7 @@ internal sealed class ConfigCommand : BaseCommand
{
action_embed.Description = this.GetString(CommandKey.MessageUrlWrongGuild, true);
action_embed.ImageUrl = "";
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(action_embed.AsError(ctx, this.GetString(CommandKey.Title))));
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(action_embed.AsError(ctx, this.GetString(CommandKey.Title))));
await Task.Delay(3000);
continue;
}
@ -150,7 +150,7 @@ internal sealed class ConfigCommand : BaseCommand
{
action_embed.Description = this.GetString(CommandKey.MessageUrlNoChannel, true);
action_embed.ImageUrl = "";
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(action_embed.AsError(ctx, this.GetString(CommandKey.Title))));
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(action_embed.AsError(ctx, this.GetString(CommandKey.Title))));
await Task.Delay(3000);
continue;
}
@ -161,7 +161,7 @@ internal sealed class ConfigCommand : BaseCommand
{
action_embed.Description = this.GetString(CommandKey.MessageUrlNoMessage, true);
action_embed.ImageUrl = "";
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(action_embed.AsError(ctx, this.GetString(CommandKey.Title))));
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(action_embed.AsError(ctx, this.GetString(CommandKey.Title))));
await Task.Delay(3000);
continue;
}
@ -175,7 +175,7 @@ internal sealed class ConfigCommand : BaseCommand
action_embed.Description = this.GetString(CommandKey.ReactWithEmoji, true);
action_embed.ImageUrl = "";
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(action_embed.AsAwaitingInput(ctx, this.GetString(CommandKey.Title))));
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(action_embed.AsAwaitingInput(ctx, this.GetString(CommandKey.Title))));
var emoji_wait = await ctx.Client.GetInteractivity().WaitForReactionAsync(x => x.Channel.Id == ctx.Channel.Id && x.User.Id == ctx.User.Id && x.Message.Id == selectedMessage.Id, TimeSpan.FromMinutes(2));
@ -194,7 +194,7 @@ internal sealed class ConfigCommand : BaseCommand
if (emoji.Id != 0 && !ctx.Guild.Emojis.ContainsKey(emoji.Id))
{
action_embed.Description = this.GetString(CommandKey.NoAccessToEmoji, true);
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(action_embed.AsError(ctx, this.GetString(CommandKey.Title))));
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(action_embed.AsError(ctx, this.GetString(CommandKey.Title))));
await Task.Delay(3000);
continue;
}
@ -202,7 +202,7 @@ internal sealed class ConfigCommand : BaseCommand
if (ctx.DbGuild.ReactionRoles.Any(x => (x.MessageId == selectedMessage.Id && x.EmojiName == emoji.GetUniqueDiscordName())))
{
action_embed.Description = this.GetString(CommandKey.EmojiAlreadyUsed, true);
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(action_embed.AsError(ctx, this.GetString(CommandKey.Title))));
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(action_embed.AsError(ctx, this.GetString(CommandKey.Title))));
await Task.Delay(3000);
continue;
}
@ -242,7 +242,7 @@ internal sealed class ConfigCommand : BaseCommand
if (ctx.DbGuild.ReactionRoles.Any(x => x.RoleId == RoleResult.Result.Id))
{
action_embed.Description = this.GetString(CommandKey.RoleAlreadyUsed, true);
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(action_embed.AsError(ctx, this.GetString(CommandKey.Title))));
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(action_embed.AsError(ctx, this.GetString(CommandKey.Title))));
await Task.Delay(3000);
continue;
}
@ -257,7 +257,7 @@ internal sealed class ConfigCommand : BaseCommand
if (ctx.DbGuild.ReactionRoles.Length > 100)
{
action_embed.Description = this.GetString(CommandKey.ReactionRoleLimitReached, true);
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(action_embed.AsError(ctx, this.GetString(CommandKey.Title))));
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(action_embed.AsError(ctx, this.GetString(CommandKey.Title))));
await Task.Delay(5000);
await this.ExecuteCommand(ctx, arguments);
return;
@ -266,7 +266,7 @@ internal sealed class ConfigCommand : BaseCommand
if (ctx.DbGuild.ReactionRoles.Any(x => x.RoleId == selectedRole.Id))
{
action_embed.Description = this.GetString(CommandKey.RoleAlreadyUsed, true);
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(action_embed.AsError(ctx, this.GetString(CommandKey.Title))));
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(action_embed.AsError(ctx, this.GetString(CommandKey.Title))));
await Task.Delay(5000);
await this.ExecuteCommand(ctx, arguments);
return;
@ -275,7 +275,7 @@ internal sealed class ConfigCommand : BaseCommand
if (selectedEmoji.Id != 0 && !ctx.Guild.Emojis.ContainsKey(selectedEmoji.Id))
{
action_embed.Description = this.GetString(CommandKey.NoAccessToEmoji, true);
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(action_embed.AsError(ctx, this.GetString(CommandKey.Title))));
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(action_embed.AsError(ctx, this.GetString(CommandKey.Title))));
await Task.Delay(5000);
await this.ExecuteCommand(ctx, arguments);
return;
@ -284,7 +284,7 @@ internal sealed class ConfigCommand : BaseCommand
if (ctx.DbGuild.ReactionRoles.Any(x => (x.MessageId == selectedMessage.Id && x.EmojiName == selectedEmoji.GetUniqueDiscordName())))
{
action_embed.Description = this.GetString(CommandKey.EmojiAlreadyUsed, true);
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(action_embed.AsError(ctx, this.GetString(CommandKey.Title))));
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(action_embed.AsError(ctx, this.GetString(CommandKey.Title))));
await Task.Delay(5000);
await this.ExecuteCommand(ctx, arguments);
return;
@ -306,7 +306,7 @@ internal sealed class ConfigCommand : BaseCommand
new TVar("User", selectedMessage.Author.Mention),
new TVar("Channel", selectedMessage.Channel.Mention),
new TVar("Emoji", selectedEmoji));
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(action_embed.AsSuccess(ctx, this.GetString(CommandKey.Title))));
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(action_embed.AsSuccess(ctx, this.GetString(CommandKey.Title))));
await Task.Delay(5000);
await this.ExecuteCommand(ctx, arguments);
return;
@ -357,7 +357,7 @@ internal sealed class ConfigCommand : BaseCommand
new TVar("User", reactionMessage?.Author.Mention ?? "`/`"),
new TVar("Channel", reactionMessage?.Channel.Mention ?? "`/`"),
new TVar("Emoji", obj.GetEmoji(ctx.Client)));
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(embed.AsSuccess(ctx, this.GetString(CommandKey.Title))));
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(embed.AsSuccess(ctx, this.GetString(CommandKey.Title))));
await Task.Delay(5000);
await this.ExecuteCommand(ctx, arguments);
return;

View file

@ -68,7 +68,7 @@ internal sealed class RemoveAllCommand : BaseCommand
if (!ctx.DbGuild.ReactionRoles.Any(x => x.MessageId == message.Id))
{
embed.Description = this.GetString(CommandKey.NoReactionRoles, true);
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(embed.AsError(ctx, this.GetString(CommandKey.Title))));
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(embed.AsError(ctx, this.GetString(CommandKey.Title))));
return;
}
@ -80,7 +80,7 @@ internal sealed class RemoveAllCommand : BaseCommand
embed.Description = this.GetString(CommandKey.RemovedAllReactionRoles, true,
new TVar("User", message?.Author.Mention ?? "`/`"),
new TVar("Channel", message?.Channel.Mention ?? "`/`"));
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(embed.AsSuccess(ctx, this.GetString(CommandKey.Title))));
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(embed.AsSuccess(ctx, this.GetString(CommandKey.Title))));
});
}
}

View file

@ -77,7 +77,7 @@ internal sealed class RemoveCommand : BaseCommand
case Enums.CommandType.ContextMenu:
{
embed.Description = this.GetString(CommandKey.ReactWithEmojiToRemove, true);
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(embed.AsAwaitingInput(ctx, this.GetString(CommandKey.Title))));
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(embed.AsAwaitingInput(ctx, this.GetString(CommandKey.Title))));
var emoji_wait = await ctx.Client.GetInteractivity().WaitForReactionAsync(x => x.Channel.Id == ctx.Channel.Id && x.User.Id == ctx.User.Id && x.Message.Id == message.Id, TimeSpan.FromMinutes(2));
@ -98,7 +98,7 @@ internal sealed class RemoveCommand : BaseCommand
if (!ctx.DbGuild.ReactionRoles.Any(x => x.MessageId == message.Id && x.EmojiName == emoji_parameter.GetUniqueDiscordName()))
{
embed.Description = this.GetString(CommandKey.NoReactionRoleFound);
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(embed.AsError(ctx, this.GetString(CommandKey.Title))));
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(embed.AsError(ctx, this.GetString(CommandKey.Title))));
return;
}
@ -116,7 +116,7 @@ internal sealed class RemoveCommand : BaseCommand
new TVar("User", reactionMessage?.Author.Mention ?? "`/`"),
new TVar("Channel", reactionMessage?.Channel.Mention ?? "`/`"),
new TVar("Emoji", obj.GetEmoji(ctx.Client)));
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(embed.AsSuccess(ctx, this.GetString(CommandKey.Title))));
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(embed.AsSuccess(ctx, this.GetString(CommandKey.Title))));
});
}
}

View file

@ -34,7 +34,7 @@ internal sealed class TokenDetectionCommand : BaseCommand
var Toggle = new DiscordButtonComponent((ctx.DbGuild.TokenLeakDetection.DetectTokens ? ButtonStyle.Danger : ButtonStyle.Success), Guid.NewGuid().ToString(), this.GetString(CommandKey.ToggleTokenDetection), false, new DiscordComponentEmoji(DiscordEmoji.FromUnicode("⚠")));
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(embed)
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(embed)
.AddComponents(new List<DiscordComponent>
{
Toggle

View file

@ -34,7 +34,7 @@ internal sealed class VcCreatorCommand : BaseCommand
var SetChannel = new DiscordButtonComponent(ButtonStyle.Primary, Guid.NewGuid().ToString(), this.GetString(CommandKey.SetVcCreator), false, EmojiTemplates.GetChannel(ctx.Bot).ToComponent());
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(embed)
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(embed)
.AddComponents(new List<DiscordComponent>
{
SetChannel

View file

@ -1,4 +1,4 @@
// Project Makoto
// Project Makoto
// Copyright (C) 2024 Fortunevale
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
@ -180,7 +180,7 @@ public sealed partial class DebugCommands : ApplicationCommandsModule
}
}
[SlashCommand("developertools", "Developer Tools used to manage Makoto.", dmPermission: false, defaultMemberPermissions: (long)Permissions.None)]
[SlashCommand("developertools", "Developer Tools used to manage Makoto.", defaultMemberPermissions: (long)Permissions.None, allowedContexts: [InteractionContextType.Guild])]
[System.Diagnostics.CodeAnalysis.SuppressMessage("Style", "IDE0075:Simplify conditional expression", Justification = "<Pending>")]
public async Task DevTools(InteractionContext ctx,
[Autocomplete(typeof(MaintainerAutoComplete))][Option("command", "The command to run.", true)] string command,

View file

@ -23,7 +23,7 @@ internal sealed class EvaluationCommand : BaseCommand
{
if (ctx.CommandType is not Enums.CommandType.ApplicationCommand and not Enums.CommandType.ContextMenu)
{
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(new DiscordEmbedBuilder().WithDescription("Evaluating CScript has the potential of leaking confidential information. Are you sure you want to run this command as Prefix Command?").AsWarning(ctx))
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(new DiscordEmbedBuilder().WithDescription("Evaluating CScript has the potential of leaking confidential information. Are you sure you want to run this command as Prefix Command?").AsWarning(ctx))
.AddComponents(new List<DiscordComponent> { new DiscordButtonComponent(ButtonStyle.Success, "yes", "Yes"),
new DiscordButtonComponent(ButtonStyle.Danger, "no", "No")}));

View file

@ -44,7 +44,7 @@ internal sealed class GlobalNotesCommand : BaseCommand
var RemoveButton = new DiscordButtonComponent(ButtonStyle.Primary, Guid.NewGuid().ToString(), "Remove Notes", (!ctx.Bot.globalNotes.ContainsKey(victim.Id)), DiscordEmoji.FromUnicode("").ToComponent());
_ = await this.RespondOrEdit(new DiscordMessageBuilder()
.WithEmbed(new DiscordEmbedBuilder()
.AddEmbed(new DiscordEmbedBuilder()
.WithDescription($"{victim.Mention} `has {(ctx.Bot.globalNotes.TryGetValue(victim.Id, out var noteObj) ? noteObj.Notes.Length : 0)} global notes.`")
.AddFields((noteObj is not null ? noteObj.Notes.Take(20).Select(x => new DiscordEmbedField("󠂪 󠂪", $"{x.Reason.FullSanitize()} - `{(ModeratorCache[x.Moderator] is null ? "Unknown#0000" : ModeratorCache[x.Moderator].GetUsernameWithIdentifier())}` {x.Timestamp.ToTimestamp()}")) : new List<DiscordEmbedField>())))
.AddComponents(new List<DiscordComponent> { AddButton, RemoveButton })

View file

@ -1,4 +1,4 @@
// Project Makoto
// Project Makoto
// Copyright (C) 2024 Fortunevale
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
@ -44,7 +44,7 @@ internal sealed class CustomEmbedCommand : BaseCommand
try
{
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(GeneratedEmbed)
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(GeneratedEmbed)
.AddComponents(new List<DiscordComponent> { SetTitle, SetAuthor, SetThumbnail })
.AddComponents(new List<DiscordComponent> { SetDescription, SetImage, SetColor })
.AddComponents(new List<DiscordComponent> { SetFooter, SetTimestamp })
@ -119,7 +119,7 @@ internal sealed class CustomEmbedCommand : BaseCommand
var SetByUser = new DiscordButtonComponent(ButtonStyle.Primary, Guid.NewGuid().ToString(), this.GetString(CommandKey.SetAsUserButton), false, new DiscordComponentEmoji(DiscordEmoji.FromUnicode("👤")));
var SetByGuild = new DiscordButtonComponent(ButtonStyle.Primary, Guid.NewGuid().ToString(), this.GetString(CommandKey.SetAsServer), false, new DiscordComponentEmoji(DiscordEmoji.FromUnicode("🖥")));
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(GeneratedEmbed)
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(GeneratedEmbed)
.AddComponents(new List<DiscordComponent> { SetName, SetUrl, SetIcon })
.AddComponents(new List<DiscordComponent> { SetByUser, SetByGuild })
.AddComponents(new List<DiscordComponent> { MessageComponents.GetBackButton(ctx.DbUser, ctx.Bot) }));
@ -225,7 +225,7 @@ internal sealed class CustomEmbedCommand : BaseCommand
var asset = await (await ctx.Client.GetChannelAsync(ctx.Bot.status.LoadedConfig.Channels.OtherAssets)).SendMessageAsync(new DiscordMessageBuilder().WithContent($"{ctx.User.Mention} `{ctx.User.GetUsernameWithIdentifier()} ({ctx.User.Id})`").WithFile($"{Guid.NewGuid()}.png", stream.stream));
GeneratedEmbed.Author.IconUrl = asset.Attachments[0].Url;
GeneratedEmbed.Author.IconUrl = asset.Attachments[0].Url.ToString();
continue;
}
else if (Menu2.GetCustomId() == SetByUser.CustomId)
@ -320,7 +320,7 @@ internal sealed class CustomEmbedCommand : BaseCommand
var asset = await (await ctx.Client.GetChannelAsync(ctx.Bot.status.LoadedConfig.Channels.OtherAssets)).SendMessageAsync(new DiscordMessageBuilder().WithContent($"{ctx.User.Mention} `{ctx.User.GetUsernameWithIdentifier()} ({ctx.User.Id})`").WithFile($"{Guid.NewGuid()}.png", stream.stream));
GeneratedEmbed.Thumbnail.Url = asset.Attachments[0].Url;
GeneratedEmbed.Thumbnail.Url = asset.Attachments[0].Url.ToString();
continue;
}
else if (Menu1.GetCustomId() == SetDescription.CustomId)
@ -384,7 +384,7 @@ internal sealed class CustomEmbedCommand : BaseCommand
var asset = await (await ctx.Client.GetChannelAsync(ctx.Bot.status.LoadedConfig.Channels.OtherAssets)).SendMessageAsync(new DiscordMessageBuilder().WithContent($"{ctx.User.Mention} `{ctx.User.GetUsernameWithIdentifier()} ({ctx.User.Id})`").WithFile($"{Guid.NewGuid()}.png", stream.stream));
GeneratedEmbed.ImageUrl = asset.Attachments[0].Url;
GeneratedEmbed.ImageUrl = asset.Attachments[0].Url.ToString();
continue;
}
else if (Menu1.GetCustomId() == SetColor.CustomId)
@ -425,7 +425,7 @@ internal sealed class CustomEmbedCommand : BaseCommand
var SetByUser = new DiscordButtonComponent(ButtonStyle.Primary, Guid.NewGuid().ToString(), this.GetString(CommandKey.SetAsUserButton), false, new DiscordComponentEmoji(DiscordEmoji.FromUnicode("👤")));
var SetByGuild = new DiscordButtonComponent(ButtonStyle.Primary, Guid.NewGuid().ToString(), this.GetString(CommandKey.SetAsServer), false, new DiscordComponentEmoji(DiscordEmoji.FromUnicode("🖥")));
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(GeneratedEmbed)
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(GeneratedEmbed)
.AddComponents(new List<DiscordComponent> { SetText, SetIcon })
.AddComponents(new List<DiscordComponent> { SetByUser, SetByGuild })
.AddComponents(new List<DiscordComponent> { MessageComponents.GetBackButton(ctx.DbUser, ctx.Bot) }));
@ -499,7 +499,7 @@ internal sealed class CustomEmbedCommand : BaseCommand
var asset = await (await ctx.Client.GetChannelAsync(ctx.Bot.status.LoadedConfig.Channels.OtherAssets)).SendMessageAsync(new DiscordMessageBuilder().WithContent($"{ctx.User.Mention} `{ctx.User.GetUsernameWithIdentifier()} ({ctx.User.Id})`").WithFile($"{Guid.NewGuid()}.png", stream.stream));
GeneratedEmbed.Footer.IconUrl = asset.Attachments[0].Url;
GeneratedEmbed.Footer.IconUrl = asset.Attachments[0].Url.ToString();
continue;
}
else if (Menu2.GetCustomId() == SetByUser.CustomId)

View file

@ -31,7 +31,7 @@ internal sealed class GuildPurgeCommand : BaseCommand
return;
}
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(new DiscordEmbedBuilder().
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(new DiscordEmbedBuilder().
WithDescription(this.GetString(CommandKey.Scanning, true, new TVar("Victim", victim.Mention)))
.AsLoading(ctx)));
@ -49,7 +49,7 @@ internal sealed class GuildPurgeCommand : BaseCommand
currentProg++;
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(new DiscordEmbedBuilder().
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(new DiscordEmbedBuilder().
WithDescription($"{this.GetString(CommandKey.Scanning, true, new TVar("Victim", victim.Mention))}\n" +
$"`{StringTools.GenerateASCIIProgressbar(currentProg, maxProg)} {MathTools.CalculatePercentage(currentProg, maxProg),3}%`")
.AsLoading(ctx)));
@ -118,7 +118,7 @@ internal sealed class GuildPurgeCommand : BaseCommand
if (message.CreationTimestamp.GetTimespanSince() > TimeSpan.FromDays(14))
_ = channel.Value.Remove(message);
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(new DiscordEmbedBuilder()
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(new DiscordEmbedBuilder()
.WithDescription($"{this.GetString(CommandKey.Deleting, true, new TVar("Victim", victim.Mention), new TVar("Count", allMsg))}\n" +
$"`{StringTools.GenerateASCIIProgressbar(currentProg, maxProg)} {MathTools.CalculatePercentage(currentProg, maxProg)}%`")
.AsLoading(ctx)));
@ -133,7 +133,7 @@ internal sealed class GuildPurgeCommand : BaseCommand
{
try
{
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(new DiscordEmbedBuilder()
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(new DiscordEmbedBuilder()
.WithDescription($"{this.GetString(CommandKey.Deleting, true, new TVar("Victim", victim.Mention), new TVar("Count", allMsg))}\n" +
$"`{StringTools.GenerateASCIIProgressbar(currentProg, maxProg)} {MathTools.CalculatePercentage(currentProg, maxProg)}%`")
.AsLoading(ctx)));
@ -149,7 +149,7 @@ internal sealed class GuildPurgeCommand : BaseCommand
catch { }
}
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(new DiscordEmbedBuilder()
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(new DiscordEmbedBuilder()
.WithDescription(this.GetString(CommandKey.Ended, true, new TVar("Victim", victim.Mention), new TVar("Min", currentProg), new TVar("Max", maxProg), new TVar("ChannelCount", channelList.Count)))
.AsSuccess(ctx)));
});

View file

@ -28,7 +28,7 @@ internal sealed class ManualBumpCommand : BaseCommand
DiscordButtonComponent YesButton = new(ButtonStyle.Success, Guid.NewGuid().ToString(), this.GetString(this.t.Common.Yes), false, DiscordEmoji.FromUnicode("✅").ToComponent());
_ = await this.RespondOrEdit(new DiscordMessageBuilder()
.WithEmbed(new DiscordEmbedBuilder().WithDescription(this.GetString(CommandKey.Warning, true)).AsWarning(ctx))
.AddEmbed(new DiscordEmbedBuilder().WithDescription(this.GetString(CommandKey.Warning, true)).AsWarning(ctx))
.AddComponents(new DiscordButtonComponent(ButtonStyle.Danger, Guid.NewGuid().ToString(), this.GetString(this.t.Common.No), false, DiscordEmoji.FromUnicode("❌").ToComponent()), YesButton));
var e = await ctx.ResponseMessage.WaitForButtonAsync(ctx.User);

View file

@ -37,7 +37,7 @@ internal sealed class AvatarCommand : BaseCommand
var ServerProfilePictureButton = new DiscordButtonComponent(ButtonStyle.Secondary, "ShowServer", this.GetString(this.t.Commands.Utility.Avatar.ShowServerProfile), (string.IsNullOrWhiteSpace(member?.GuildAvatarHash)), new DiscordComponentEmoji(DiscordEmoji.FromUnicode("🖥")));
var ProfilePictureButton = new DiscordButtonComponent(ButtonStyle.Secondary, "ShowProfile", this.GetString(this.t.Commands.Utility.Avatar.ShowUserProfile), false, new DiscordComponentEmoji(DiscordEmoji.FromUnicode("👤")));
var builder = new DiscordMessageBuilder().WithEmbed(embed).AddComponents(ServerProfilePictureButton);
var builder = new DiscordMessageBuilder().AddEmbed(embed).AddComponents(ServerProfilePictureButton);
var msg = await this.RespondOrEdit(builder);
@ -77,12 +77,12 @@ internal sealed class AvatarCommand : BaseCommand
if (e.GetCustomId() == ServerProfilePictureButton.CustomId)
{
embed.ImageUrl = member.GuildAvatarUrl;
_ = this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(embed).AddComponents(ProfilePictureButton));
_ = this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(embed).AddComponents(ProfilePictureButton));
}
else if (e.GetCustomId() == ProfilePictureButton.CustomId)
{
embed.ImageUrl = member.AvatarUrl;
_ = this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(embed).AddComponents(ServerProfilePictureButton));
_ = this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(embed).AddComponents(ServerProfilePictureButton));
}
}
}).Add(ctx.Bot, ctx);

View file

@ -29,7 +29,7 @@ internal sealed class BannerCommand : BaseCommand
Description = victim.BannerUrl.IsNullOrWhiteSpace() ? this.GetString(this.t.Commands.Utility.Banner.NoBanner, true) : ""
}.AsInfo(ctx, this.GetString(this.t.Commands.Utility.Banner.Banner, false, new TVar("User", victim.GetUsernameWithIdentifier())));
var builder = new DiscordMessageBuilder().WithEmbed(embed);
var builder = new DiscordMessageBuilder().AddEmbed(embed);
_ = await this.RespondOrEdit(builder);
});

View file

@ -23,7 +23,7 @@ internal sealed class DeleteCommand : BaseCommand
if (ctx.Bot.objectedUsers.Contains(ctx.User.Id))
{
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(new DiscordEmbedBuilder
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(new DiscordEmbedBuilder
{
Description = this.GetString(this.t.Commands.Utility.Data.Object.ProfileAlreadyDeleted, true)
}.AsAwaitingInput(ctx)).AddComponents(new List<DiscordComponent> { Yes, No }));
@ -75,7 +75,7 @@ internal sealed class DeleteCommand : BaseCommand
if (ctx.DbUser.Data.DeletionRequested)
{
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(new DiscordEmbedBuilder
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(new DiscordEmbedBuilder
{
Description = this.GetString(this.t.Commands.Utility.Data.Object.DeletionAlreadyScheduled, true,
new TVar("RequestTimestamp", ctx.DbUser.Data.DeletionRequestDate.AddDays(-14).ToTimestamp()),
@ -110,7 +110,7 @@ internal sealed class DeleteCommand : BaseCommand
return;
}
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(new DiscordEmbedBuilder
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(new DiscordEmbedBuilder
{
Description = this.GetString(this.t.Commands.Utility.Data.Object.ObjectionDisclaimer, true, true)
}.AsAwaitingInput(ctx)).AddComponents(new List<DiscordComponent> { Yes, No }));
@ -127,7 +127,7 @@ internal sealed class DeleteCommand : BaseCommand
if (Menu.GetCustomId() == Yes.CustomId)
{
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(new DiscordEmbedBuilder
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(new DiscordEmbedBuilder
{
Description = $"**{this.GetString(this.t.Commands.Utility.Data.Object.SecondaryConfirm, true)}**"
}.AsAwaitingInput(ctx)).AddComponents(new List<DiscordComponent> { No, Yes }));

View file

@ -55,7 +55,7 @@ internal sealed class RequestCommand : BaseCommand
{
case Enums.CommandType.ApplicationCommand:
{
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(new DiscordEmbedBuilder
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(new DiscordEmbedBuilder
{
Description = this.GetString(this.t.Commands.Utility.Data.Request.Confirm, true)
}.AsSuccess(ctx)).WithFile("userdata.json", stream));
@ -66,7 +66,7 @@ internal sealed class RequestCommand : BaseCommand
{
try
{
_ = await ctx.User.SendMessageAsync(new DiscordMessageBuilder().WithEmbed(new DiscordEmbedBuilder
_ = await ctx.User.SendMessageAsync(new DiscordMessageBuilder().AddEmbed(new DiscordEmbedBuilder
{
Description = this.GetString(this.t.Commands.Utility.Data.Request.Confirm, true)
}.AsSuccess(ctx)).WithFile("userdata.json", stream));

View file

@ -198,7 +198,7 @@ internal sealed class EmojiStealerCommand : BaseCommand
var SendHereButton = new DiscordButtonComponent(ButtonStyle.Secondary, "SendHere", this.GetString(this.t.Commands.Utility.EmojiStealer.CurrentChatZip), !(ctx.Member.Permissions.HasPermission(Permissions.AttachFiles)), new DiscordComponentEmoji(DiscordEmoji.FromUnicode("💬")));
var builder = new DiscordMessageBuilder().WithEmbed(embed);
var builder = new DiscordMessageBuilder().AddEmbed(embed);
if (SanitizedEmoteList.Any(x => x.Value.EntryType == EmojiType.STICKER))
_ = builder.AddComponents(IncludeStickersButton);
@ -268,7 +268,7 @@ internal sealed class EmojiStealerCommand : BaseCommand
new TVar("Min", 0),
new TVar("Max", (IncludeStickers ? SanitizedEmoteList.Count : SanitizedEmoteList.Where(x => x.Value.EntryType == EmojiType.EMOJI).Count())));
_ = embed.AsLoading(ctx);
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(embed));
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(embed));
for (var i = 0; i < SanitizedEmoteList.Count; i++)
{
@ -369,7 +369,7 @@ internal sealed class EmojiStealerCommand : BaseCommand
embed.Description = this.GetString(this.t.Commands.Utility.EmojiStealer.SendingDm, true, new TVar("Type", emojiText));
_ = embed.AsLoading(ctx);
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(embed));
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(embed));
try
{
@ -416,7 +416,7 @@ internal sealed class EmojiStealerCommand : BaseCommand
cancellationTokenSource.Cancel();
embed.Description = this.GetString(this.t.Commands.Utility.EmojiStealer.PreparingZip, true);
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(embed.AsLoading(ctx)));
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(embed.AsLoading(ctx)));
using (var archive = new ZipArchive(zipFileStream, ZipArchiveMode.Create, true))
{
@ -476,7 +476,7 @@ internal sealed class EmojiStealerCommand : BaseCommand
new TVar("Type", emojiText));
_ = zipFileStream.Seek(0, SeekOrigin.Begin);
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithFile($"Emotes.zip", zipFileStream).WithEmbed(embed.AsSuccess(ctx)));
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithFile($"Emotes.zip", zipFileStream).AddEmbed(embed.AsSuccess(ctx)));
}
return;
}
@ -493,7 +493,7 @@ internal sealed class EmojiStealerCommand : BaseCommand
IncludeStickersButton = new DiscordButtonComponent((IncludeStickers ? ButtonStyle.Success : ButtonStyle.Danger), "ToggleStickers", this.GetString(this.t.Commands.Utility.EmojiStealer.ToggleStickers), !SanitizedEmoteList.Any(x => x.Value.EntryType == EmojiType.EMOJI), new DiscordComponentEmoji(DiscordEmoji.FromGuildEmote(ctx.Client, (ulong)(IncludeStickers ? 970278964755038248 : 970278964079767574))));
AddToServerButton = new DiscordButtonComponent(ButtonStyle.Success, "AddToServer", (IncludeStickers ? this.GetString(this.t.Commands.Utility.EmojiStealer.AddEmojisAndStickerToServer) : this.GetString(this.t.Commands.Utility.EmojiStealer.AddEmojisToServer)), !ctx.Member.Permissions.HasPermission(Permissions.ManageGuildExpressions), new DiscordComponentEmoji(DiscordEmoji.FromUnicode("")));
var builder = new DiscordMessageBuilder().WithEmbed(embed);
var builder = new DiscordMessageBuilder().AddEmbed(embed);
if (SanitizedEmoteList.Any(x => x.Value.EntryType == EmojiType.STICKER))
_ = builder.AddComponents(IncludeStickersButton);

View file

@ -108,13 +108,13 @@ internal sealed class GuildInfoCommand : BaseCommand
if (guild.RawFeatures.Count > 0)
_ = embed.AddField(new DiscordEmbedField(this.GetString(CommandKey.GuildFeatures), $"{string.Join(", ", guild.RawFeatures.Select(x => $"`{string.Join(" ", x.Replace("_", " ").ToLower().Split(" ").Select(x => x.FirstLetterToUpper()))}`"))}"));
var builder = new DiscordMessageBuilder().WithEmbed(embed);
var builder = new DiscordMessageBuilder().AddEmbed(embed);
if (!guild.VanityUrlCode.IsNullOrWhiteSpace())
_ = builder.AddComponents(new DiscordLinkButtonComponent($"https://discord.gg/{guild.VanityUrlCode}", this.GetString(CommandKey.JoinServer), false, DiscordEmoji.FromUnicode("🔗").ToComponent()));
_ = await this.RespondOrEdit(new DiscordMessageBuilder()
.WithEmbed(embed)
.AddEmbed(embed)
.AddComponents(new DiscordLinkButtonComponent(guild.BannerUrl ?? "https://discord.gg", this.GetString(CommandKey.Banner), guild.BannerUrl is null),
new DiscordLinkButtonComponent(guild.SplashUrl ?? "https://discord.gg", this.GetString(CommandKey.Splash), guild.BannerUrl is null),
new DiscordLinkButtonComponent(guild.DiscoverySplashUrl ?? "https://discord.gg", this.GetString(CommandKey.DiscoverySplash), guild.BannerUrl is null),
@ -127,7 +127,7 @@ internal sealed class GuildInfoCommand : BaseCommand
// using (var file = new FileStream($"cache/{imageHash}", FileMode.Open, FileAccess.Read))
// {
// _ = await this.RespondOrEdit(new DiscordMessageBuilder()
// .WithEmbed(embed)
// .AddEmbed(embed)
// .WithFile("banner.png", file));
// }
//}
@ -162,7 +162,7 @@ internal sealed class GuildInfoCommand : BaseCommand
_ = embed.AddField(new DiscordEmbedField(this.GetString(CommandKey.GuildFeatures), $"{string.Join(", ", preview.Features.Select(x => $"`{string.Join(" ", x.Replace("_", " ").ToLower().Split(" ").Select(x => x.FirstLetterToUpper()))}`"))}"));
var builder = new DiscordMessageBuilder().WithEmbed(embed);
var builder = new DiscordMessageBuilder().AddEmbed(embed);
var invite = "";
@ -187,7 +187,7 @@ internal sealed class GuildInfoCommand : BaseCommand
_ = embed.AddField(new DiscordEmbedField(this.GetString(CommandKey.MemberTitle), $"🟢 `{widget.PresenceCount}` **{this.GetString(CommandKey.OnlineMembers)}**\n"));
var builder = new DiscordMessageBuilder().WithEmbed(embed);
var builder = new DiscordMessageBuilder().AddEmbed(embed);
if (!widget.InstantInviteUrl.IsNullOrWhiteSpace())
_ = builder.AddComponents(new DiscordLinkButtonComponent(widget.InstantInviteUrl, this.GetString(CommandKey.JoinServer), false, DiscordEmoji.FromUnicode("🔗").ToComponent()));

View file

@ -177,7 +177,7 @@ internal sealed class HelpCommand : BaseCommand
var PreviousButton = new DiscordButtonComponent(ButtonStyle.Primary, Guid.NewGuid().ToString(), this.GetString(this.t.Common.PreviousPage), (Page <= 0), DiscordEmoji.FromUnicode("◀").ToComponent());
var NextButton = new DiscordButtonComponent(ButtonStyle.Primary, Guid.NewGuid().ToString(), this.GetString(this.t.Common.NextPage), (Page >= discordEmbeds.Count - 1), DiscordEmoji.FromUnicode("▶").ToComponent());
var builder = new DiscordMessageBuilder().WithEmbed(discordEmbeds.ElementAt(Page));
var builder = new DiscordMessageBuilder().AddEmbed(discordEmbeds.ElementAt(Page));
if (!PreviousButton.Disabled || !NextButton.Disabled)
_ = builder.AddComponents(PreviousButton, NextButton);

View file

@ -14,7 +14,7 @@ internal sealed class LeaderboardCommand : BaseCommand
{
return Task.Run(async () =>
{
var ShowAmount = (int)arguments["amount"];
var ShowAmount = arguments.ContainsKey("amount") ? (int)arguments["amount"] : 10;
if (await ctx.DbUser.Cooldown.WaitForModerate(ctx))
return;

View file

@ -34,7 +34,7 @@ internal sealed class RemindersCommand : BaseCommand
if (snoozeDescription is null)
{
_ = await this.RespondOrEdit(new DiscordMessageBuilder()
.WithEmbed(new DiscordEmbedBuilder()
.AddEmbed(new DiscordEmbedBuilder()
.WithDescription($"{this.GetString(this.t.Commands.Utility.Reminders.Count, true, new TVar("Count", rem.ScheduledReminders.Length))}\n\n" +
$"{string.Join("\n\n", rem.ScheduledReminders.Select(x => $"> {x.Description.FullSanitize()}\n{this.GetString(this.t.Commands.Utility.Reminders.CreatedOn, new TVar("Guild", $"**{x.CreationPlace}**"))}\n{this.GetString(this.t.Commands.Utility.Reminders.DueTime, new TVar("Relative", x.DueTime.ToTimestamp()), new TVar("DateTime", x.DueTime.ToTimestamp(TimestampFormat.LongDateTime)))}").ToList())}\n\n" +
$"**⚠ {this.GetString(this.t.Commands.Utility.Reminders.Notice)}**")
@ -80,7 +80,7 @@ internal sealed class RemindersCommand : BaseCommand
$"`{this.GetString(this.t.Commands.Utility.Reminders.DateTime).PadRight(padding)}`: {(selectedDueDate is null ? $"`{this.GetString(this.t.Common.NotSelected)}`" : $"{selectedDueDate.Value.ToTimestamp(TimestampFormat.LongDateTime)} ({selectedDueDate.Value.ToTimestamp()})")}"
}.AsAwaitingInput(ctx, this.GetString(this.t.Commands.Utility.Reminders.Title));
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(action_embed)
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(action_embed)
.AddComponents(new List<DiscordComponent> { SelectDescriptionButton, SelectDueDateButton, Finish })
.AddComponents(MessageComponents.GetBackButton(ctx.DbUser, ctx.Bot)));

View file

@ -40,7 +40,7 @@ internal sealed class ReportHostCommand : BaseCommand
tos_embed.Description = tos_embed.Description.Insert(0, $"**{this.GetString(this.t.Commands.Utility.ReportHost.TosChangedNotice)}**\n\n");
}
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(tos_embed).AddComponents(button));
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(tos_embed).AddComponents(button));
var TosAccept = await ctx.WaitForButtonAsync(TimeSpan.FromMinutes(2));
@ -100,7 +100,7 @@ internal sealed class ReportHostCommand : BaseCommand
var ContinueButton = new DiscordButtonComponent(ButtonStyle.Success, Guid.NewGuid().ToString(), this.GetString(this.t.Common.Confirm), false, new DiscordComponentEmoji(DiscordEmoji.FromUnicode("✅")));
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(embed).AddComponents(new List<DiscordComponent>
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(embed).AddComponents(new List<DiscordComponent>
{
{ ContinueButton },
{ MessageComponents.GetCancelButton(ctx.DbUser, ctx.Bot) }
@ -158,7 +158,7 @@ internal sealed class ReportHostCommand : BaseCommand
var BanUserButton = new DiscordButtonComponent(ButtonStyle.Danger, "ban_user", "Deny submission & ban submitter", false, new DiscordComponentEmoji(DiscordEmoji.FromGuildEmote(ctx.Client, 1005430134070841395)));
var BanGuildButton = new DiscordButtonComponent(ButtonStyle.Danger, "ban_guild", "Deny submission & ban guild", false, new DiscordComponentEmoji(DiscordEmoji.FromGuildEmote(ctx.Client, 1005430134070841395)));
var submittedMsg = await channel.SendMessageAsync(new DiscordMessageBuilder().WithEmbed(new DiscordEmbedBuilder
var submittedMsg = await channel.SendMessageAsync(new DiscordMessageBuilder().AddEmbed(new DiscordEmbedBuilder
{
Author = new DiscordEmbedBuilder.EmbedAuthor { IconUrl = StatusIndicatorIcons.Success, Name = this.GetString(this.t.Commands.Utility.ReportHost.Title) },
Color = EmbedColors.Success,

View file

@ -49,7 +49,7 @@ internal sealed class ReportTranslationCommand : BaseCommand
tos_embed.Description = tos_embed.Description.Insert(0, $"**{this.GetString(CommandKey.TosChangedNotice)}**\n\n");
}
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(tos_embed).AddComponents(button));
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(tos_embed).AddComponents(button));
var TosAccept = await ctx.WaitForButtonAsync(TimeSpan.FromMinutes(2));

View file

@ -32,7 +32,7 @@ internal sealed class UrbanDictionaryCommand : BaseCommand
var Yes = new DiscordButtonComponent(ButtonStyle.Success, Guid.NewGuid().ToString(), this.GetString(this.t.Common.Yes), false, new DiscordComponentEmoji(true.ToEmote(ctx.Bot)));
var No = new DiscordButtonComponent(ButtonStyle.Danger, Guid.NewGuid().ToString(), this.GetString(this.t.Common.No), false, new DiscordComponentEmoji(false.ToEmote(ctx.Bot)));
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(new DiscordEmbedBuilder
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(new DiscordEmbedBuilder
{
Description = this.GetString(this.t.Commands.Utility.UrbanDictionary.AdultContentWarning, true)
}.AsAwaitingInput(ctx)).AddComponents(new List<DiscordComponent> { Yes, No }));

View file

@ -189,7 +189,7 @@ internal sealed class UserInfoCommand : BaseCommand
if (bMember is not null && bMember.CommunicationDisabledUntil.HasValue && bMember.CommunicationDisabledUntil.Value.GetTotalSecondsUntil() > 0)
_ = embed.AddField(new DiscordEmbedField(this.GetString(this.t.Commands.Utility.UserInfo.TimedOutUntil), $"{Formatter.Timestamp(bMember.CommunicationDisabledUntil.Value, TimestampFormat.LongDateTime)}", true));
_ = await this.RespondOrEdit(builder.WithEmbed(embed));
_ = await this.RespondOrEdit(builder.AddEmbed(embed));
if (InviterButtonAdded)
{

View file

@ -25,6 +25,27 @@ public sealed class JoinSettings(Bot bot, Guild parent) : RequiresParent<Guild>(
set => _ = this.Bot.DatabaseClient.SetValue("guilds", "serverid", this.Parent.Id, "joinlog_channel_id", value, this.Bot.DatabaseClient.mainDatabaseConnection);
}
[ColumnName("usercount_channel_last_edit"), ColumnType(ColumnTypes.BigInt), Default("0")]
public DateTime UserCountChannelLastEdit
{
get => this.Bot.DatabaseClient.GetValue<DateTime>("guilds", "serverid", this.Parent.Id, "usercount_channel_last_edit", this.Bot.DatabaseClient.mainDatabaseConnection);
set => _ = this.Bot.DatabaseClient.SetValue("guilds", "serverid", this.Parent.Id, "usercount_channel_last_edit", value, this.Bot.DatabaseClient.mainDatabaseConnection);
}
[ColumnName("usercount_channel_id"), ColumnType(ColumnTypes.BigInt), Default("0")]
public ulong UserCountChannelId
{
get => this.Bot.DatabaseClient.GetValue<ulong>("guilds", "serverid", this.Parent.Id, "usercount_channel_id", this.Bot.DatabaseClient.mainDatabaseConnection);
set => _ = this.Bot.DatabaseClient.SetValue("guilds", "serverid", this.Parent.Id, "usercount_channel_id", value, this.Bot.DatabaseClient.mainDatabaseConnection);
}
[ColumnName("usercount_channel_format"), ColumnType(ColumnTypes.Text), Nullable]
public string? UserCountChannelFormat
{
get => this.Bot.DatabaseClient.GetValue<string?>("guilds", "serverid", this.Parent.Id, "usercount_channel_format", this.Bot.DatabaseClient.mainDatabaseConnection);
set => _ = this.Bot.DatabaseClient.SetValue("guilds", "serverid", this.Parent.Id, "usercount_channel_format", value, this.Bot.DatabaseClient.mainDatabaseConnection);
}
[ColumnName("autoban_global_ban"), ColumnType(ColumnTypes.TinyInt), Default("0")]
public bool AutoBanGlobalBans
{

View file

@ -52,6 +52,7 @@ public sealed class Status
public EmojiConfig Emojis = new(config);
public DiscordConfig Discord = new(config);
public ChannelsConfig Channels = new(config);
public QuickChartConfig QuickChart = new(config);
public sealed class DiscordConfig(Config config)
{
@ -113,6 +114,13 @@ public sealed class Status
public ulong AbuseIPDB => config.Emojis.AbuseIPDB;
public ulong Spotify => config.Emojis.Spotify;
}
public sealed class QuickChartConfig(Config config)
{
public string? Scheme => config.Secrets.QuickChart.Scheme;
public string? Host = config.Secrets.QuickChart.Host;
public int? Port = config.Secrets.QuickChart.Port;
}
}
#region Legacy

View file

@ -380,11 +380,15 @@ public class Translations : ITranslations
public SingleTranslationKey CantUseRole;
public SingleTranslationKey DisableRoleOnJoin;
public SingleTranslationKey AutoAssignRoleName;
public SingleTranslationKey DisableUserCountChannel;
public SingleTranslationKey DisableJoinlog;
public SingleTranslationKey JoinLogChannelName;
public SingleTranslationKey ToggleReApplyNickname;
public SingleTranslationKey ToggleReApplyRole;
public SingleTranslationKey ChangeRoleButton;
public SingleTranslationKey ChangeUserCountChannelFormatModal;
public SingleTranslationKey ChangeUserCountChannelFormat;
public SingleTranslationKey ChangeUserCountChannel;
public SingleTranslationKey ChangeJoinlogChannelButton;
public SingleTranslationKey ToggleGlobalBansButton;
public SingleTranslationKey TimeNotice;
@ -392,6 +396,8 @@ public class Translations : ITranslations
public SingleTranslationKey ReApplyNickname;
public SingleTranslationKey ReApplyRoles;
public SingleTranslationKey Role;
public SingleTranslationKey UserCountChannelFormat;
public SingleTranslationKey UserCountChannel;
public SingleTranslationKey JoinLogChannel;
public SingleTranslationKey Autoban;
public SingleTranslationKey Title;

View file

@ -48,7 +48,7 @@ public sealed class ReminderSettings : RequiresParent<User>
var user = await this.Bot.DiscordClient.GetFirstShard().GetUserAsync(this.Parent.Id);
var builder = new DiscordMessageBuilder().WithEmbed(new DiscordEmbedBuilder()
var builder = new DiscordMessageBuilder().AddEmbed(new DiscordEmbedBuilder()
.WithDescription($"> {b.Description.FullSanitize()}\n" +
$"{CommandKey.CreatedOn.Get(this.Bot.Users[user.Id]).Build(new TVar("Guild", b.CreationPlace))}\n" +
$"{CommandKey.CreatedAt.Get(this.Bot.Users[user.Id]).Build(new TVar("Timestamp", $"{b.CreationTime.ToTimestamp()} ({b.CreationTime.ToTimestamp(TimestampFormat.LongDateTime)})"))}\n" +

View file

@ -1,4 +1,4 @@
// Project Makoto
// Project Makoto
// Copyright (C) 2024 Fortunevale
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
@ -42,7 +42,7 @@ internal sealed class ActionlogEvents(Bot bot) : RequiresTranslation(bot)
$"{string.Join("\n\n", globalNote.Notes.Select(x => $"{x.Reason.FullSanitize()} - <@{x.Moderator}> {x.Timestamp.ToTimestamp()}"))}".TruncateWithIndication(512)));
}
var message = await this.SendActionlog(e.Guild, new DiscordMessageBuilder().WithEmbed(embed));
var message = await this.SendActionlog(e.Guild, new DiscordMessageBuilder().AddEmbed(embed));
await Task.Delay(5000);
@ -63,7 +63,7 @@ internal sealed class ActionlogEvents(Bot bot) : RequiresTranslation(bot)
if (this.Bot.Guilds[e.Guild.Id].InviteNotes.Notes.Any(x => x.Invite == this.Bot.Guilds[e.Guild.Id].Members[e.Member.Id].InviteTracker.Code))
embed.Description += $"**{this.tKey.InviteNote.Get(this.Bot.Guilds[e.Guild.Id])}**: `{this.Bot.Guilds[e.Guild.Id].InviteNotes.Notes.First(x => x.Invite == this.Bot.Guilds[e.Guild.Id].Members[e.Member.Id].InviteTracker.Code).Note.SanitizeForCode()}`";
_ = message.ModifyAsync(new DiscordMessageBuilder().WithEmbed(embed));
_ = message.ModifyAsync(new DiscordMessageBuilder().AddEmbed(embed));
}
internal async Task UserLeft(DiscordClient sender, GuildMemberRemoveEventArgs e)
@ -83,7 +83,7 @@ internal sealed class ActionlogEvents(Bot bot) : RequiresTranslation(bot)
if (e.Member.Roles.Any())
_ = embed.AddField(new DiscordEmbedField(this.tKey.Roles.Get(this.Bot.Guilds[e.Guild.Id]).Build(), $"{string.Join(", ", e.Member.Roles.Select(x => x.Mention))}".TruncateWithIndication(1000)));
var msg = await this.SendActionlog(e.Guild, new DiscordMessageBuilder().WithEmbed(embed));
var msg = await this.SendActionlog(e.Guild, new DiscordMessageBuilder().AddEmbed(embed));
for (var i = 0; i < 3; i++)
{
@ -106,7 +106,7 @@ internal sealed class ActionlogEvents(Bot bot) : RequiresTranslation(bot)
embed.Footer = new();
embed.Footer.Text += $"\n({this.tKey.FooterAuditLogDisclaimer.Get(this.Bot.Guilds[e.Guild.Id]).Build(new TVar("Fields", $"'{this.tKey.KickedBy.Get(this.Bot.Guilds[e.Guild.Id])}' & '{this.tKey.Reason.Get(this.Bot.Guilds[e.Guild.Id])}'"))})";
_ = msg.ModifyAsync(new DiscordMessageBuilder().WithEmbed(embed));
_ = msg.ModifyAsync(new DiscordMessageBuilder().AddEmbed(embed));
break;
}
@ -160,7 +160,7 @@ internal sealed class ActionlogEvents(Bot bot) : RequiresTranslation(bot)
if (embed.Fields.Count == 0)
return;
_ = this.SendActionlog(e.Guild, new DiscordMessageBuilder().WithEmbed(embed));
_ = this.SendActionlog(e.Guild, new DiscordMessageBuilder().AddEmbed(embed));
}
internal async Task VoiceStateUpdated(DiscordClient sender, VoiceStateUpdateEventArgs e)
@ -174,7 +174,7 @@ internal sealed class ActionlogEvents(Bot bot) : RequiresTranslation(bot)
if (PreviousChannel != NewChannel)
if (PreviousChannel is null && NewChannel is not null)
{
_ = await this.SendActionlog(e.Guild, new DiscordMessageBuilder().WithEmbed(new DiscordEmbedBuilder()
_ = await this.SendActionlog(e.Guild, new DiscordMessageBuilder().AddEmbed(new DiscordEmbedBuilder()
.WithAuthor(this.tKey.UserJoinedVoiceChannel.Get(this.Bot.Guilds[e.Guild.Id]), null, AuditLogIcons.VoiceStateUserJoined)
.WithThumbnail(e.User.AvatarUrl)
.WithColor(EmbedColors.Success)
@ -185,7 +185,7 @@ internal sealed class ActionlogEvents(Bot bot) : RequiresTranslation(bot)
}
else if (PreviousChannel is not null && NewChannel is null)
{
_ = await this.SendActionlog(e.Guild, new DiscordMessageBuilder().WithEmbed(new DiscordEmbedBuilder()
_ = await this.SendActionlog(e.Guild, new DiscordMessageBuilder().AddEmbed(new DiscordEmbedBuilder()
.WithAuthor(this.tKey.UserLeftVoiceChannel.Get(this.Bot.Guilds[e.Guild.Id]), null, AuditLogIcons.VoiceStateUserLeft)
.WithThumbnail(e.User.AvatarUrl)
.WithColor(EmbedColors.Error)
@ -196,7 +196,7 @@ internal sealed class ActionlogEvents(Bot bot) : RequiresTranslation(bot)
}
else if (PreviousChannel is not null && NewChannel is not null)
{
_ = await this.SendActionlog(e.Guild, new DiscordMessageBuilder().WithEmbed(new DiscordEmbedBuilder()
_ = await this.SendActionlog(e.Guild, new DiscordMessageBuilder().AddEmbed(new DiscordEmbedBuilder()
.WithAuthor(this.tKey.UserSwitchedVoiceChannel.Get(this.Bot.Guilds[e.Guild.Id]), null, AuditLogIcons.VoiceStateUserUpdated)
.WithThumbnail(e.User.AvatarUrl)
.WithColor(EmbedColors.Warning)
@ -264,7 +264,7 @@ internal sealed class ActionlogEvents(Bot bot) : RequiresTranslation(bot)
using (var fileStream = new MemoryStream(Encoding.UTF8.GetBytes(Messages)))
{
_ = await this.SendActionlog(e.Guild, new DiscordMessageBuilder().WithEmbed(embed).WithFile(FileName, fileStream)
_ = await this.SendActionlog(e.Guild, new DiscordMessageBuilder().AddEmbed(embed).WithFile(FileName, fileStream)
.AddComponents(new DiscordLinkButtonComponent($"{this.Bot.status.LoadedConfig.WebServer.UrlPrefix}/{e.Guild.Id}/DeletedMessages/{FileName}", "Open in Browser",
this.Bot.status.LoadedConfig.WebServer.UrlPrefix.IsNullOrWhiteSpace())));
}
@ -311,7 +311,7 @@ internal sealed class ActionlogEvents(Bot bot) : RequiresTranslation(bot)
return;
}
_ = this.SendActionlog(e.Guild, new DiscordMessageBuilder().WithEmbed(embed));
_ = this.SendActionlog(e.Guild, new DiscordMessageBuilder().AddEmbed(embed));
}
internal async Task MemberUpdated(DiscordClient sender, GuildMemberUpdateEventArgs e)
@ -339,7 +339,7 @@ internal sealed class ActionlogEvents(Bot bot) : RequiresTranslation(bot)
else
_ = embed.AddField(new DiscordEmbedField(this.tKey.NewNickname.Get(this.Bot.Guilds[e.Guild.Id]), $"`{e.NicknameAfter}`"));
_ = this.SendActionlog(e.Guild, new DiscordMessageBuilder().WithEmbed(embed));
_ = this.SendActionlog(e.Guild, new DiscordMessageBuilder().AddEmbed(embed));
}
var RolesUpdated = false;
@ -427,7 +427,7 @@ internal sealed class ActionlogEvents(Bot bot) : RequiresTranslation(bot)
embed.Description += $"\n\n{Roles}";
_ = this.SendActionlog(e.Guild, new DiscordMessageBuilder().WithEmbed(embed));
_ = this.SendActionlog(e.Guild, new DiscordMessageBuilder().AddEmbed(embed));
}
if (e.TimeoutBefore != e.TimeoutAfter)
@ -436,7 +436,7 @@ internal sealed class ActionlogEvents(Bot bot) : RequiresTranslation(bot)
var timeBefore = (e.TimeoutBefore ?? DateTime.Today.AddDays(-300)).ToUniversalTime();
if (timeAfter > timeBefore)
_ = this.SendActionlog(e.Guild, new DiscordMessageBuilder().WithEmbed(new DiscordEmbedBuilder()
_ = this.SendActionlog(e.Guild, new DiscordMessageBuilder().AddEmbed(new DiscordEmbedBuilder()
.WithAuthor(this.tKey.TimedOut.Get(this.Bot.Guilds[e.Guild.Id]), null, AuditLogIcons.UserBanned)
.WithColor(EmbedColors.Error)
.WithFooter($"{this.tKey.UserId.Get(this.Bot.Guilds[e.Guild.Id])}: {e.Member.Id}")
@ -446,7 +446,7 @@ internal sealed class ActionlogEvents(Bot bot) : RequiresTranslation(bot)
$"**{this.tKey.TimedOutUntil.Get(this.Bot.Guilds[e.Guild.Id])}**: {timeAfter.Timestamp(TimestampFormat.LongDateTime)} ({timeAfter.Timestamp()})")));
if (timeAfter < timeBefore)
_ = this.SendActionlog(e.Guild, new DiscordMessageBuilder().WithEmbed(new DiscordEmbedBuilder()
_ = this.SendActionlog(e.Guild, new DiscordMessageBuilder().AddEmbed(new DiscordEmbedBuilder()
.WithAuthor(this.tKey.TimeoutRemoved.Get(this.Bot.Guilds[e.Guild.Id]), null, AuditLogIcons.UserBanRemoved)
.WithColor(EmbedColors.Success)
.WithFooter($"{this.tKey.UserId.Get(this.Bot.Guilds[e.Guild.Id])}: {e.Member.Id}")
@ -460,7 +460,7 @@ internal sealed class ActionlogEvents(Bot bot) : RequiresTranslation(bot)
try
{
if ((e.PendingBefore is null && e.PendingAfter is true) || (e.PendingAfter is true && e.PendingBefore is false))
_ = this.SendActionlog(e.Guild, new DiscordMessageBuilder().WithEmbed(new DiscordEmbedBuilder()
_ = this.SendActionlog(e.Guild, new DiscordMessageBuilder().AddEmbed(new DiscordEmbedBuilder()
.WithAuthor(this.tKey.MembershipApproved.Get(this.Bot.Guilds[e.Guild.Id]), null, AuditLogIcons.UserAdded)
.WithColor(EmbedColors.Success)
.WithFooter($"{this.tKey.UserId.Get(this.Bot.Guilds[e.Guild.Id])}: {e.Member.Id}")
@ -478,7 +478,7 @@ internal sealed class ActionlogEvents(Bot bot) : RequiresTranslation(bot)
//{
// // Normal avatar updates don't seem to fire the member updated event, will keep this code for potential future updates.
// _ = SendActionlog(e.Guild, new DiscordMessageBuilder().WithEmbed(new DiscordEmbedBuilder()
// _ = SendActionlog(e.Guild, new DiscordMessageBuilder().AddEmbed(new DiscordEmbedBuilder()
// {
// Author = new DiscordEmbedBuilder.EmbedAuthor { IconUrl = AuditLogIcons.UserUpdated, Name = $"Member Profile Picture updated" },
// Color = EmbedColors.Warning,
@ -492,7 +492,7 @@ internal sealed class ActionlogEvents(Bot bot) : RequiresTranslation(bot)
if (e.GuildAvatarHashBefore != e.GuildAvatarHashAfter)
{
_ = this.SendActionlog(e.Guild, new DiscordMessageBuilder().WithEmbed(new DiscordEmbedBuilder()
_ = this.SendActionlog(e.Guild, new DiscordMessageBuilder().AddEmbed(new DiscordEmbedBuilder()
.WithAuthor(this.tKey.GuildProfilePictureUpdated.Get(this.Bot.Guilds[e.Guild.Id]), null, AuditLogIcons.UserUpdated)
.WithColor(EmbedColors.Warning)
.WithFooter($"{this.tKey.UserId.Get(this.Bot.Guilds[e.Guild.Id])}: {e.Member.Id}")
@ -513,12 +513,12 @@ internal sealed class ActionlogEvents(Bot bot) : RequiresTranslation(bot)
if (e.Role.IsManaged)
{
if (e.Role.Tags?.PremiumSubscriber ?? false)
if (e.Role.Type is RoleType.Booster)
Integration = $"**{this.tKey.Integration.Get(this.Bot.Guilds[e.Guild.Id])}**: `{this.tKey.ServerBooster.Get(this.Bot.Guilds[e.Guild.Id])}`\n\n";
if (e.Role.Tags?.BotId is not null and not 0)
if (e.Role.Type is RoleType.Bot)
{
var bot = await sender.GetUserAsync((ulong)e.Role.Tags.BotId);
var bot = await sender.GetUserAsync(e.Role.Tags!.BotId.Value);
Integration = $"**{this.tKey.Integration.Get(this.Bot.Guilds[e.Guild.Id])}**: {bot.Mention} `{bot.GetUsernameWithIdentifier()}`\n\n";
}
@ -536,7 +536,7 @@ internal sealed class ActionlogEvents(Bot bot) : RequiresTranslation(bot)
$"{Integration}" +
$"\n**{this.tKey.Permissions.Get(this.Bot.Guilds[e.Guild.Id])}**: {GeneratePermissions}");
var msg = await this.SendActionlog(e.Guild, new DiscordMessageBuilder().WithEmbed(embed));
var msg = await this.SendActionlog(e.Guild, new DiscordMessageBuilder().AddEmbed(embed));
if (!this.Bot.Guilds[e.Guild.Id].ActionLog.AttemptGettingMoreDetails)
return;
@ -555,7 +555,7 @@ internal sealed class ActionlogEvents(Bot bot) : RequiresTranslation(bot)
embed.Footer.Text += $"\n({this.tKey.FooterAuditLogDisclaimer.Get(this.Bot.Guilds[e.Guild.Id]).Build(new TVar("Fields", $"'{this.tKey.CreatedBy.Get(this.Bot.Guilds[e.Guild.Id])}'"))})";
_ = msg.ModifyAsync(new DiscordMessageBuilder().WithEmbed(embed));
_ = msg.ModifyAsync(new DiscordMessageBuilder().AddEmbed(embed));
break;
}
@ -573,12 +573,12 @@ internal sealed class ActionlogEvents(Bot bot) : RequiresTranslation(bot)
if (e.Role.IsManaged)
{
if (e.Role.Tags?.PremiumSubscriber ?? false)
if (e.Role.Type is RoleType.Booster)
Integration = $"**{this.tKey.Integration.Get(this.Bot.Guilds[e.Guild.Id])}**: `{this.tKey.ServerBooster.Get(this.Bot.Guilds[e.Guild.Id])}`\n\n";
if (e.Role.Tags.BotId is not null and not 0)
if (e.Role.Type is RoleType.Bot)
{
var bot = await sender.GetUserAsync((ulong)e.Role.Tags.BotId);
var bot = await sender.GetUserAsync(e.Role.Tags!.BotId.Value);
Integration = $"**{this.tKey.Integration.Get(this.Bot.Guilds[e.Guild.Id])}**: {bot.Mention} `{bot.GetUsernameWithIdentifier()}`\n\n";
}
@ -597,7 +597,7 @@ internal sealed class ActionlogEvents(Bot bot) : RequiresTranslation(bot)
$"{Integration}\n" +
$"\n**{this.tKey.Permissions.Get(this.Bot.Guilds[e.Guild.Id])}**: {GeneratePermissions}");
var msg = await this.SendActionlog(e.Guild, new DiscordMessageBuilder().WithEmbed(embed));
var msg = await this.SendActionlog(e.Guild, new DiscordMessageBuilder().AddEmbed(embed));
if (!this.Bot.Guilds[e.Guild.Id].ActionLog.AttemptGettingMoreDetails)
return;
@ -616,7 +616,7 @@ internal sealed class ActionlogEvents(Bot bot) : RequiresTranslation(bot)
embed.Footer.Text += $"\n({this.tKey.FooterAuditLogDisclaimer.Get(this.Bot.Guilds[e.Guild.Id]).Build(new TVar("Fields", $"'{this.tKey.DeletedBy.Get(this.Bot.Guilds[e.Guild.Id])}'"))})";
_ = msg.ModifyAsync(new DiscordMessageBuilder().WithEmbed(embed));
_ = msg.ModifyAsync(new DiscordMessageBuilder().AddEmbed(embed));
break;
}
@ -671,12 +671,12 @@ internal sealed class ActionlogEvents(Bot bot) : RequiresTranslation(bot)
if (e.RoleAfter.IsManaged)
{
if (e.RoleAfter.Tags?.PremiumSubscriber ?? false)
if (e.RoleAfter.Type is RoleType.Booster)
Integration = $"**{this.tKey.Integration.Get(this.Bot.Guilds[e.Guild.Id])}**: `{this.tKey.ServerBooster.Get(this.Bot.Guilds[e.Guild.Id])}`\n\n";
if (e.RoleAfter.Tags?.BotId is not null and not 0)
if (e.RoleAfter.Type is RoleType.Bot)
{
var bot = await sender.GetUserAsync((ulong)e.RoleAfter.Tags.BotId);
var bot = await sender.GetUserAsync(e.RoleAfter.Tags!.BotId.Value);
Integration = $"**{this.tKey.Integration.Get(this.Bot.Guilds[e.Guild.Id])}**: {bot.Mention} `{bot.GetUsernameWithIdentifier()}`\n\n";
}
@ -702,7 +702,7 @@ internal sealed class ActionlogEvents(Bot bot) : RequiresTranslation(bot)
$"{Integration}" +
$"{PermissionDifference}");
var msg = await this.SendActionlog(e.Guild, new DiscordMessageBuilder().WithEmbed(embed));
var msg = await this.SendActionlog(e.Guild, new DiscordMessageBuilder().AddEmbed(embed));
if (!this.Bot.Guilds[e.Guild.Id].ActionLog.AttemptGettingMoreDetails)
return;
@ -721,7 +721,7 @@ internal sealed class ActionlogEvents(Bot bot) : RequiresTranslation(bot)
embed.Footer.Text += $"\n({this.tKey.FooterAuditLogDisclaimer.Get(this.Bot.Guilds[e.Guild.Id]).Build(new TVar("Fields", $"'{this.tKey.ModifiedBy.Get(this.Bot.Guilds[e.Guild.Id])}'"))})";
_ = msg.ModifyAsync(new DiscordMessageBuilder().WithEmbed(embed));
_ = msg.ModifyAsync(new DiscordMessageBuilder().AddEmbed(embed));
break;
}
@ -751,7 +751,7 @@ internal sealed class ActionlogEvents(Bot bot) : RequiresTranslation(bot)
.TruncateWithIndication(1000)));
}
var msg = await this.SendActionlog(e.Guild, new DiscordMessageBuilder().WithEmbed(embed));
var msg = await this.SendActionlog(e.Guild, new DiscordMessageBuilder().AddEmbed(embed));
if (!this.Bot.Guilds[e.Guild.Id].ActionLog.AttemptGettingMoreDetails)
return;
@ -772,7 +772,7 @@ internal sealed class ActionlogEvents(Bot bot) : RequiresTranslation(bot)
embed.Footer.Text += $"\n({this.tKey.FooterAuditLogDisclaimer.Get(this.Bot.Guilds[e.Guild.Id]).Build(new TVar("Fields", $"'{this.tKey.BannedBy.Get(this.Bot.Guilds[e.Guild.Id])}' & '{this.tKey.Reason.Get(this.Bot.Guilds[e.Guild.Id])}'"))})";
_ = msg.ModifyAsync(new DiscordMessageBuilder().WithEmbed(embed));
_ = msg.ModifyAsync(new DiscordMessageBuilder().AddEmbed(embed));
break;
}
@ -793,7 +793,7 @@ internal sealed class ActionlogEvents(Bot bot) : RequiresTranslation(bot)
.WithThumbnail(e.Member.AvatarUrl)
.WithDescription($"**{this.tKey.User.Get(this.Bot.Guilds[e.Guild.Id])}**: {e.Member.Mention} `{e.Member.GetUsernameWithIdentifier()}`");
var msg = await this.SendActionlog(e.Guild, new DiscordMessageBuilder().WithEmbed(embed));
var msg = await this.SendActionlog(e.Guild, new DiscordMessageBuilder().AddEmbed(embed));
if (!this.Bot.Guilds[e.Guild.Id].ActionLog.AttemptGettingMoreDetails)
return;
@ -811,7 +811,7 @@ internal sealed class ActionlogEvents(Bot bot) : RequiresTranslation(bot)
embed.Footer.Text += $"\n({this.tKey.FooterAuditLogDisclaimer.Get(this.Bot.Guilds[e.Guild.Id]).Build(new TVar("Fields", $"'{this.tKey.UnbannedBy.Get(this.Bot.Guilds[e.Guild.Id])}'"))})";
_ = msg.ModifyAsync(new DiscordMessageBuilder().WithEmbed(embed));
_ = msg.ModifyAsync(new DiscordMessageBuilder().AddEmbed(embed));
break;
}
@ -927,7 +927,7 @@ internal sealed class ActionlogEvents(Bot bot) : RequiresTranslation(bot)
if (e.GuildBefore.IconHash != e.GuildAfter.IconHash)
embed.ImageUrl = e.GuildAfter.IconUrl;
var msg = await this.SendActionlog(e.GuildAfter, new DiscordMessageBuilder().WithEmbed(embed));
var msg = await this.SendActionlog(e.GuildAfter, new DiscordMessageBuilder().AddEmbed(embed));
if (!this.Bot.Guilds[e.GuildAfter.Id].ActionLog.AttemptGettingMoreDetails)
return;
@ -946,7 +946,7 @@ internal sealed class ActionlogEvents(Bot bot) : RequiresTranslation(bot)
embed.Footer = new();
embed.Footer.Text += $"\n({this.tKey.FooterAuditLogDisclaimer.Get(this.Bot.Guilds[e.GuildAfter.Id]).Build(new TVar("Fields", $"'{this.tKey.ModifiedBy.Get(this.Bot.Guilds[e.GuildAfter.Id])}'"))})";
_ = msg.ModifyAsync(new DiscordMessageBuilder().WithEmbed(embed));
_ = msg.ModifyAsync(new DiscordMessageBuilder().AddEmbed(embed));
break;
}
@ -966,7 +966,7 @@ internal sealed class ActionlogEvents(Bot bot) : RequiresTranslation(bot)
.WithTimestamp(DateTime.UtcNow)
.WithDescription($"**{this.tKey.Name.Get(this.Bot.Guilds[e.Guild.Id])}**: {e.Channel.Mention} `[{e.Channel.GetIcon()}{e.Channel.Name}]`");
var msg = await this.SendActionlog(e.Guild, new DiscordMessageBuilder().WithEmbed(embed));
var msg = await this.SendActionlog(e.Guild, new DiscordMessageBuilder().AddEmbed(embed));
if (!this.Bot.Guilds[e.Guild.Id].ActionLog.AttemptGettingMoreDetails)
return;
@ -985,7 +985,7 @@ internal sealed class ActionlogEvents(Bot bot) : RequiresTranslation(bot)
embed.Footer.Text += $"\n({this.tKey.FooterAuditLogDisclaimer.Get(this.Bot.Guilds[e.Guild.Id]).Build(new TVar("Fields", $"'{this.tKey.CreatedBy.Get(this.Bot.Guilds[e.Guild.Id])}'"))})";
_ = msg.ModifyAsync(new DiscordMessageBuilder().WithEmbed(embed));
_ = msg.ModifyAsync(new DiscordMessageBuilder().AddEmbed(embed));
break;
}
@ -1005,7 +1005,7 @@ internal sealed class ActionlogEvents(Bot bot) : RequiresTranslation(bot)
.WithTimestamp(DateTime.UtcNow)
.WithDescription($"**{this.tKey.Name.Get(this.Bot.Guilds[e.Guild.Id])}**: `[{e.Channel.GetIcon()}{e.Channel.Name}]`");
var msg = await this.SendActionlog(e.Guild, new DiscordMessageBuilder().WithEmbed(embed));
var msg = await this.SendActionlog(e.Guild, new DiscordMessageBuilder().AddEmbed(embed));
if (!this.Bot.Guilds[e.Guild.Id].ActionLog.AttemptGettingMoreDetails)
return;
@ -1024,7 +1024,7 @@ internal sealed class ActionlogEvents(Bot bot) : RequiresTranslation(bot)
embed.Footer.Text += $"\n({this.tKey.FooterAuditLogDisclaimer.Get(this.Bot.Guilds[e.Guild.Id]).Build(new TVar("Fields", $"'{this.tKey.DeletedBy.Get(this.Bot.Guilds[e.Guild.Id])}'"))})";
_ = msg.ModifyAsync(new DiscordMessageBuilder().WithEmbed(embed));
_ = msg.ModifyAsync(new DiscordMessageBuilder().AddEmbed(embed));
break;
}
@ -1055,7 +1055,7 @@ internal sealed class ActionlogEvents(Bot bot) : RequiresTranslation(bot)
.WithTimestamp(DateTime.UtcNow)
.WithDescription(Description);
var msg = await this.SendActionlog(e.Guild, new DiscordMessageBuilder().WithEmbed(embed));
var msg = await this.SendActionlog(e.Guild, new DiscordMessageBuilder().AddEmbed(embed));
if (!this.Bot.Guilds[e.Guild.Id].ActionLog.AttemptGettingMoreDetails)
return;
@ -1074,7 +1074,7 @@ internal sealed class ActionlogEvents(Bot bot) : RequiresTranslation(bot)
embed.Footer.Text += $"\n({this.tKey.FooterAuditLogDisclaimer.Get(this.Bot.Guilds[e.Guild.Id]).Build(new TVar("Fields", $"'{this.tKey.ModifiedBy.Get(this.Bot.Guilds[e.Guild.Id])}'"))})";
_ = msg.ModifyAsync(new DiscordMessageBuilder().WithEmbed(embed));
_ = msg.ModifyAsync(new DiscordMessageBuilder().AddEmbed(embed));
break;
}
@ -1087,7 +1087,7 @@ internal sealed class ActionlogEvents(Bot bot) : RequiresTranslation(bot)
if (!await this.ValidateServer(e.Guild) || !this.Bot.Guilds[e.Guild.Id].ActionLog.InvitesModified)
return;
_ = this.SendActionlog(e.Guild, new DiscordMessageBuilder().WithEmbed(new DiscordEmbedBuilder()
_ = this.SendActionlog(e.Guild, new DiscordMessageBuilder().AddEmbed(new DiscordEmbedBuilder()
.WithAuthor(this.tKey.InviteCreated.Get(this.Bot.Guilds[e.Guild.Id]), null, AuditLogIcons.InviteAdded)
.WithColor(EmbedColors.Success)
.WithTimestamp(DateTime.UtcNow)
@ -1109,7 +1109,7 @@ internal sealed class ActionlogEvents(Bot bot) : RequiresTranslation(bot)
$"**{this.tKey.CreatedBy.Get(this.Bot.Guilds[e.Guild.Id])}**: {e.Invite.Inviter?.Mention ?? this.tKey.NoInviter.Get(this.Bot.Guilds[e.Guild.Id]).Build(true)} `{e.Invite.Inviter?.GetUsernameWithIdentifier() ?? "-"}`\n" +
$"**{this.tKey.Channel.Get(this.Bot.Guilds[e.Guild.Id])}**: {e.Channel.Mention} `[{e.Channel.GetIcon()}{e.Channel.Name}]`");
var msg = await this.SendActionlog(e.Guild, new DiscordMessageBuilder().WithEmbed(embed));
var msg = await this.SendActionlog(e.Guild, new DiscordMessageBuilder().AddEmbed(embed));
if (!this.Bot.Guilds[e.Guild.Id].ActionLog.AttemptGettingMoreDetails)
@ -1130,7 +1130,7 @@ internal sealed class ActionlogEvents(Bot bot) : RequiresTranslation(bot)
embed.Footer = new();
embed.Footer.Text += $"\n({this.tKey.FooterAuditLogDisclaimer.Get(this.Bot.Guilds[e.Guild.Id]).Build(new TVar("Fields", $"'{this.tKey.DeletedBy.Get(this.Bot.Guilds[e.Guild.Id])}'"))})";
_ = msg.ModifyAsync(new DiscordMessageBuilder().WithEmbed(embed));
_ = msg.ModifyAsync(new DiscordMessageBuilder().AddEmbed(embed));
break;
}

View file

@ -1,4 +1,4 @@
// Project Makoto
// Project Makoto
// Copyright (C) 2024 Fortunevale
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
@ -55,7 +55,7 @@ internal sealed class EmbedMessagesEvents(Bot bot) : RequiresTranslation(bot)
var JumpToMessage = new DiscordLinkButtonComponent(message.JumpLink.ToString(), this.t.Common.JumpToMessage.Get(this.Bot.Guilds[e.Guild.Id]), false, new DiscordComponentEmoji(DiscordEmoji.FromUnicode("💬")));
var msg = await e.Message.RespondAsync(new DiscordMessageBuilder().WithEmbed(new DiscordEmbedBuilder
var msg = await e.Message.RespondAsync(new DiscordMessageBuilder().AddEmbed(new DiscordEmbedBuilder
{
Author = new DiscordEmbedBuilder.EmbedAuthor { IconUrl = message.Author.AvatarUrl, Name = $"{message.Author.GetUsernameWithIdentifier()}" },
Color = message.Author.BannerColor ?? EmbedColors.Info,
@ -63,7 +63,7 @@ internal sealed class EmbedMessagesEvents(Bot bot) : RequiresTranslation(bot)
ImageUrl = (message.Attachments?.Count > 0 && (message.Attachments[0].Filename.EndsWith(".png")
|| message.Attachments[0].Filename.EndsWith(".jpeg")
|| message.Attachments[0].Filename.EndsWith(".jpg")
|| message.Attachments[0].Filename.EndsWith(".gif")) ? message.Attachments[0].Url : ""),
|| message.Attachments[0].Filename.EndsWith(".gif")) ? message.Attachments[0].Url.ToString() : ""),
Timestamp = message.Timestamp,
}).AddComponents(JumpToMessage, Delete));
}

View file

@ -54,6 +54,7 @@ internal sealed class JoinEvents(Bot bot) : RequiresTranslation(bot)
}
}
await RunUserCountUpdater(this.Bot, e.Guild);
await this.Bot.Guilds[e.Guild.Id].Members[e.Member.Id].PerformAutoKickChecks(e.Guild, e.Member);
}
@ -81,5 +82,39 @@ internal sealed class JoinEvents(Bot bot) : RequiresTranslation(bot)
});
}
}
await RunUserCountUpdater(this.Bot, e.Guild);
}
internal static async Task RunUserCountUpdater(Bot bot, DiscordGuild Guild)
{
if (bot.Guilds[Guild.Id].Join.UserCountChannelId != 0)
{
if (Guild.Channels.ContainsKey(bot.Guilds[Guild.Id].Join.UserCountChannelId))
{
foreach (var b in ScheduledTaskExtensions.GetScheduledTasks())
{
if (b.CustomData is not ScheduledTaskIdentifier scheduledTaskIdentifier)
continue;
if (scheduledTaskIdentifier.Snowflake == Guild.Id && scheduledTaskIdentifier.Type == "usercount")
b.Delete();
}
_ = new Func<Task>(async () =>
{
_ = Guild.GetChannel(bot.Guilds[Guild.Id].Join.UserCountChannelId).ModifyAsync(x =>
{
x.Name = (bot.Guilds[Guild.Id].Join.UserCountChannelFormat is null ? "Count: %s" : bot.Guilds[Guild.Id].Join.UserCountChannelFormat)
.Replace("%s", Guild.MemberCount);
})
.ContinueWith(x =>
{
bot.Guilds[Guild.Id].Join.UserCountChannelLastEdit = DateTime.UtcNow;
});
}).CreateScheduledTask(bot.Guilds[Guild.Id].Join.UserCountChannelLastEdit.AddMinutes(5),
new ScheduledTaskIdentifier(Guild.Id, "", "usercount"));
}
}
}
}

View file

@ -81,7 +81,7 @@ internal sealed class PhishingProtectionEvents(Bot bot) : RequiresTranslation(bo
_ = embed.AddFields(report_fields.Take(2));
_ = e.RespondAsync(new DiscordMessageBuilder().WithEmbed(embed).AddComponents(new DiscordLinkButtonComponent($"https://www.abuseipdb.com/check/{parsedIp[0]}", this.tKey.OpenInBrowser.Get(this.Bot.Guilds[guild.Id]))));
_ = e.RespondAsync(new DiscordMessageBuilder().AddEmbed(embed).AddComponents(new DiscordLinkButtonComponent($"https://www.abuseipdb.com/check/{parsedIp[0]}", this.tKey.OpenInBrowser.Get(this.Bot.Guilds[guild.Id]))));
}
}

View file

@ -87,7 +87,7 @@ internal sealed class TokenLeakEvents(Bot bot) : RequiresTranslation(bot)
var s = (InvalidateCount > 1 ? "s" : "");
_ = e.Channel.SendMessageAsync(new DiscordMessageBuilder().WithEmbed(
_ = e.Channel.SendMessageAsync(new DiscordMessageBuilder().AddEmbed(
new DiscordEmbedBuilder()
.WithColor(EmbedColors.Error)
.WithAuthor(sender.CurrentUser.GetUsername(), null, sender.CurrentUser.AvatarUrl)

View file

@ -49,7 +49,7 @@ internal sealed class VcCreatorEvents(Bot bot) : RequiresTranslation(bot)
_ = await newChannel.SendMessageAsync(new DiscordMessageBuilder()
.WithContent(e.User.Mention)
.WithEmbed(new DiscordEmbedBuilder()
.AddEmbed(new DiscordEmbedBuilder()
.WithAuthor(e.Guild.Name, "", e.Guild.IconUrl)
.WithColor(EmbedColors.Info)
.WithTimestamp(DateTime.UtcNow)

View file

@ -41,26 +41,26 @@
<ItemGroup>
<PackageReference Include="DisCatSharp.Extensions.TwoFactorCommands" Version="3.1.0" />
<PackageReference Include="FFMpegCore" Version="5.1.0" />
<PackageReference Include="GenHTTP.Core" Version="9.6.0" />
<PackageReference Include="GenHTTP.Modules.StaticWebsites" Version="9.6.0" />
<PackageReference Include="HtmlSanitizer" Version="8.1.870" />
<PackageReference Include="Microsoft.CodeAnalysis.CSharp" Version="4.12.0" />
<PackageReference Include="Microsoft.CodeAnalysis.Scripting" Version="4.12.0" />
<PackageReference Include="FFMpegCore" Version="5.2.0" />
<PackageReference Include="GenHTTP.Core" Version="9.7.0" />
<PackageReference Include="GenHTTP.Modules.StaticWebsites" Version="9.8.0" />
<PackageReference Include="HtmlSanitizer" Version="9.0.884" />
<PackageReference Include="Microsoft.CodeAnalysis.CSharp" Version="4.13.0" />
<PackageReference Include="Microsoft.CodeAnalysis.Scripting" Version="4.13.0" />
<PackageReference Include="MySqlConnector" Version="2.4.0" />
<PackageReference Include="Octokit" Version="14.0.0" />
<PackageReference Include="Serilog" Version="4.2.0" />
<PackageReference Include="Serilog.Extensions.Logging" Version="9.0.0" />
<PackageReference Include="Serilog.Extensions.Logging" Version="9.0.1" />
<PackageReference Include="Serilog.Sinks.Console" Version="6.0.0" />
<PackageReference Include="Serilog.Sinks.File" Version="6.0.0" />
<PackageReference Include="Serilog.Sinks.File" Version="7.0.0" />
<PackageReference Include="System.Data.SqlClient" Version="4.9.0" />
<PackageReference Include="System.Data.SQLite" Version="1.0.119" />
<PackageReference Include="DisCatSharp.Analyzer.Roselyn" Version="6.2.5">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="System.Drawing.Common" Version="9.0.1" />
<PackageReference Include="System.Text.Json" Version="9.0.1" />
<PackageReference Include="System.Drawing.Common" Version="9.0.4" />
<PackageReference Include="System.Text.Json" Version="9.0.4" />
</ItemGroup>
<ItemGroup>

View file

@ -59,28 +59,28 @@ Global
x64|x64 = x64|x64
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{A47FCB9F-FEA3-4810-9C77-4CC47DB5BD19}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A47FCB9F-FEA3-4810-9C77-4CC47DB5BD19}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A47FCB9F-FEA3-4810-9C77-4CC47DB5BD19}.Debug|Any CPU.ActiveCfg = Debug|x64
{A47FCB9F-FEA3-4810-9C77-4CC47DB5BD19}.Debug|Any CPU.Build.0 = Debug|x64
{A47FCB9F-FEA3-4810-9C77-4CC47DB5BD19}.Debug|x64.ActiveCfg = Debug|x64
{A47FCB9F-FEA3-4810-9C77-4CC47DB5BD19}.Debug|x64.Build.0 = Debug|x64
{A47FCB9F-FEA3-4810-9C77-4CC47DB5BD19}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A47FCB9F-FEA3-4810-9C77-4CC47DB5BD19}.Release|Any CPU.Build.0 = Release|Any CPU
{A47FCB9F-FEA3-4810-9C77-4CC47DB5BD19}.Release|Any CPU.ActiveCfg = Release|x64
{A47FCB9F-FEA3-4810-9C77-4CC47DB5BD19}.Release|Any CPU.Build.0 = Release|x64
{A47FCB9F-FEA3-4810-9C77-4CC47DB5BD19}.Release|x64.ActiveCfg = Release|x64
{A47FCB9F-FEA3-4810-9C77-4CC47DB5BD19}.Release|x64.Build.0 = Release|x64
{A47FCB9F-FEA3-4810-9C77-4CC47DB5BD19}.x64|Any CPU.ActiveCfg = x64|Any CPU
{A47FCB9F-FEA3-4810-9C77-4CC47DB5BD19}.x64|Any CPU.Build.0 = x64|Any CPU
{A47FCB9F-FEA3-4810-9C77-4CC47DB5BD19}.x64|Any CPU.ActiveCfg = x64|x64
{A47FCB9F-FEA3-4810-9C77-4CC47DB5BD19}.x64|Any CPU.Build.0 = x64|x64
{A47FCB9F-FEA3-4810-9C77-4CC47DB5BD19}.x64|x64.ActiveCfg = x64|x64
{A47FCB9F-FEA3-4810-9C77-4CC47DB5BD19}.x64|x64.Build.0 = x64|x64
{906F9C70-17B3-4B6D-AFFF-976338D641C4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{906F9C70-17B3-4B6D-AFFF-976338D641C4}.Debug|Any CPU.Build.0 = Debug|Any CPU
{906F9C70-17B3-4B6D-AFFF-976338D641C4}.Debug|Any CPU.ActiveCfg = Debug|x64
{906F9C70-17B3-4B6D-AFFF-976338D641C4}.Debug|Any CPU.Build.0 = Debug|x64
{906F9C70-17B3-4B6D-AFFF-976338D641C4}.Debug|x64.ActiveCfg = Debug|x64
{906F9C70-17B3-4B6D-AFFF-976338D641C4}.Debug|x64.Build.0 = Debug|x64
{906F9C70-17B3-4B6D-AFFF-976338D641C4}.Release|Any CPU.ActiveCfg = Release|Any CPU
{906F9C70-17B3-4B6D-AFFF-976338D641C4}.Release|Any CPU.Build.0 = Release|Any CPU
{906F9C70-17B3-4B6D-AFFF-976338D641C4}.Release|Any CPU.ActiveCfg = Release|x64
{906F9C70-17B3-4B6D-AFFF-976338D641C4}.Release|Any CPU.Build.0 = Release|x64
{906F9C70-17B3-4B6D-AFFF-976338D641C4}.Release|x64.ActiveCfg = Release|x64
{906F9C70-17B3-4B6D-AFFF-976338D641C4}.Release|x64.Build.0 = Release|x64
{906F9C70-17B3-4B6D-AFFF-976338D641C4}.x64|Any CPU.ActiveCfg = x64|Any CPU
{906F9C70-17B3-4B6D-AFFF-976338D641C4}.x64|Any CPU.Build.0 = x64|Any CPU
{906F9C70-17B3-4B6D-AFFF-976338D641C4}.x64|Any CPU.ActiveCfg = x64|x64
{906F9C70-17B3-4B6D-AFFF-976338D641C4}.x64|Any CPU.Build.0 = x64|x64
{906F9C70-17B3-4B6D-AFFF-976338D641C4}.x64|x64.ActiveCfg = x64|x64
{906F9C70-17B3-4B6D-AFFF-976338D641C4}.x64|x64.Build.0 = x64|x64
{8BD34631-4327-4533-8587-93E38D7A5DD9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
@ -215,18 +215,6 @@ Global
{40158660-CD40-44A8-8834-077C132B7DDD}.x64|Any CPU.Build.0 = Debug|Any CPU
{40158660-CD40-44A8-8834-077C132B7DDD}.x64|x64.ActiveCfg = Debug|Any CPU
{40158660-CD40-44A8-8834-077C132B7DDD}.x64|x64.Build.0 = Debug|Any CPU
{7F04788A-8B14-4C62-A247-3B1F93C01B03}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{7F04788A-8B14-4C62-A247-3B1F93C01B03}.Debug|Any CPU.Build.0 = Debug|Any CPU
{7F04788A-8B14-4C62-A247-3B1F93C01B03}.Debug|x64.ActiveCfg = Debug|Any CPU
{7F04788A-8B14-4C62-A247-3B1F93C01B03}.Debug|x64.Build.0 = Debug|Any CPU
{7F04788A-8B14-4C62-A247-3B1F93C01B03}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7F04788A-8B14-4C62-A247-3B1F93C01B03}.Release|Any CPU.Build.0 = Release|Any CPU
{7F04788A-8B14-4C62-A247-3B1F93C01B03}.Release|x64.ActiveCfg = Release|Any CPU
{7F04788A-8B14-4C62-A247-3B1F93C01B03}.Release|x64.Build.0 = Release|Any CPU
{7F04788A-8B14-4C62-A247-3B1F93C01B03}.x64|Any CPU.ActiveCfg = Debug|Any CPU
{7F04788A-8B14-4C62-A247-3B1F93C01B03}.x64|Any CPU.Build.0 = Debug|Any CPU
{7F04788A-8B14-4C62-A247-3B1F93C01B03}.x64|x64.ActiveCfg = Debug|Any CPU
{7F04788A-8B14-4C62-A247-3B1F93C01B03}.x64|x64.Build.0 = Debug|Any CPU
{0AB29534-3D3E-4482-A98A-8F1C01C4B476}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{0AB29534-3D3E-4482-A98A-8F1C01C4B476}.Debug|Any CPU.Build.0 = Debug|Any CPU
{0AB29534-3D3E-4482-A98A-8F1C01C4B476}.Debug|x64.ActiveCfg = Debug|Any CPU

View file

@ -3780,6 +3780,14 @@
"en": "Joinlog Channel",
"de": "Beitrittsprotokoll-Kanal"
},
"UserCountChannel": {
"en": "User Count Channel",
"de": "Benutzeranzahl-Kanal"
},
"UserCountChannelFormat": {
"en": "User Count Format",
"de": "Benutzeranzahl-Format"
},
"Role": {
"en": "Role On Join",
"de": "Rolle beim Beitritt"
@ -3808,6 +3816,18 @@
"en": "Change Joinlog Channel",
"de": "Beitrittsprotokoll-Kanal ändern"
},
"ChangeUserCountChannel": {
"en": "Change User Count Channel",
"de": "Benutzeranzahl-Kanal ändern"
},
"ChangeUserCountChannelFormat": {
"en": "Change User Count Format",
"de": "Benutzeranzahl-Format ändern"
},
"ChangeUserCountChannelFormatModal": {
"en": "User Count Format | %s as placeholder",
"de": "Benutzeranzahl-Format | %s für Platzhalter"
},
"ChangeRoleButton": {
"en": "Change Role assigned on join",
"de": "Beim Beitritt zugewiesene Rolle ändern"
@ -3828,6 +3848,10 @@
"en": "Disable Joinlog",
"de": "Beitrittsprotokoll deaktivieren"
},
"DisableUserCountChannel": {
"en": "Disable User Count Channel",
"de": "Benutzeranzahl-Kanal deaktivieren"
},
"AutoAssignRoleName": {
"en": "Automatically Assigned Role",
"de": "Automatisch zugewiesene Rolle"

View file

@ -173,7 +173,7 @@ internal sealed class ExperienceHandler : RequiresTranslation
this.Bot.Users[user.Id].ExperienceUser.DirectMessageOptOut = true;
_ = await msg.ModifyAsync(new DiscordMessageBuilder().WithEmbed(embed));
_ = await msg.ModifyAsync(new DiscordMessageBuilder().AddEmbed(embed));
_ = await (await user.CreateDmChannelAsync()).SendMessageAsync(this.tKey.AutomaticDeletion.Get(this.Bot.Users[user.Id]).Build(
new TVar("Command", "`/levelrewards-optin`"),
@ -187,7 +187,7 @@ internal sealed class ExperienceHandler : RequiresTranslation
{ new DiscordButtonComponent(ButtonStyle.Secondary, "opt-out-experience-dm", this.tKey.DisableDirectMessages.Get(this.Bot.Users[user.Id]), false, new DiscordComponentEmoji(DiscordEmoji.FromUnicode("⛔"))) },
};
msg = await (await user.CreateDmChannelAsync()).SendMessageAsync(new DiscordMessageBuilder().WithEmbed(embed).AddComponents(discordComponents));
msg = await (await user.CreateDmChannelAsync()).SendMessageAsync(new DiscordMessageBuilder().AddEmbed(embed).AddComponents(discordComponents));
this.Bot.DiscordClient.ComponentInteractionCreated += RunInteraction;
@ -195,7 +195,7 @@ internal sealed class ExperienceHandler : RequiresTranslation
{
await Task.Delay(3600000);
embed.Footer.Text += $" • {this.t.Commands.Common.InteractionTimeout.Get(this.Bot.Users[user.Id])}";
_ = await msg.ModifyAsync(new DiscordMessageBuilder().WithEmbed(embed));
_ = await msg.ModifyAsync(new DiscordMessageBuilder().AddEmbed(embed));
this.Bot.DiscordClient.ComponentInteractionCreated -= RunInteraction;
}

View file

@ -1,4 +1,4 @@
// Project Makoto
// Project Makoto
// Copyright (C) 2024 Fortunevale
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
@ -156,23 +156,23 @@ public static class DiscordExtensions
}))}" +
$"{string.Join("", msg.Attachments?.Select(x =>
{
var tempUrl = x.Url.TruncateAt(true, '?');
var tempUrl = x.Url.ToString().TruncateAt(true, '?');
var type = string.Empty;
var alt = x.Description;
if (x.Url.EndsWith(".jpg", StringComparison.InvariantCultureIgnoreCase) ||
x.Url.EndsWith(".jpeg", StringComparison.InvariantCultureIgnoreCase) ||
x.Url.EndsWith(".png", StringComparison.InvariantCultureIgnoreCase) ||
x.Url.EndsWith(".webp", StringComparison.InvariantCultureIgnoreCase) ||
x.Url.EndsWith(".gifv", StringComparison.InvariantCultureIgnoreCase) ||
x.Url.EndsWith(".gif", StringComparison.InvariantCultureIgnoreCase))
if (x.Url.ToString().EndsWith(".jpg", StringComparison.InvariantCultureIgnoreCase) ||
x.Url.ToString().EndsWith(".jpeg", StringComparison.InvariantCultureIgnoreCase) ||
x.Url.ToString().EndsWith(".png", StringComparison.InvariantCultureIgnoreCase) ||
x.Url.ToString().EndsWith(".webp", StringComparison.InvariantCultureIgnoreCase) ||
x.Url.ToString().EndsWith(".gifv", StringComparison.InvariantCultureIgnoreCase) ||
x.Url.ToString().EndsWith(".gif", StringComparison.InvariantCultureIgnoreCase))
type = "image";
else if (x.Url.EndsWith(".webm", StringComparison.InvariantCultureIgnoreCase) ||
x.Url.EndsWith(".mp4", StringComparison.InvariantCultureIgnoreCase))
else if (x.Url.ToString().EndsWith(".webm", StringComparison.InvariantCultureIgnoreCase) ||
x.Url.ToString().EndsWith(".mp4", StringComparison.InvariantCultureIgnoreCase))
type = "video";
else if (x.Url.EndsWith(".wav", StringComparison.InvariantCultureIgnoreCase) ||
x.Url.EndsWith(".ogg", StringComparison.InvariantCultureIgnoreCase) ||
x.Url.EndsWith(".mp3", StringComparison.InvariantCultureIgnoreCase))
else if (x.Url.ToString().EndsWith(".wav", StringComparison.InvariantCultureIgnoreCase) ||
x.Url.ToString().EndsWith(".ogg", StringComparison.InvariantCultureIgnoreCase) ||
x.Url.ToString().EndsWith(".mp3", StringComparison.InvariantCultureIgnoreCase))
type = "audio";
else
{
@ -182,7 +182,7 @@ public static class DiscordExtensions
return $"<discord-attachment slot=\"attachments\" " +
$"type=\"{type}\" " +
$"url=\"{Sanitize(x.Url)}\" " +
$"url=\"{Sanitize(x.Url.ToString())}\" " +
$"alt=\"{Sanitize(alt)}\" " +
$"size=\"{x.FileSize.Value.FileSizeToHumanReadable()}\" " +
$"height=\"{x.Height}\" " +
@ -222,7 +222,7 @@ public static class DiscordExtensions
return $"<discord-attachment slot=\"attachments\" " +
$"type=\"{type}\" " +
$"url=\"{Sanitize(x.Url)}\" " +
$"url=\"{Sanitize(x.Url.ToString())}\" " +
$"alt=\"{Sanitize(alt)}\" " +
$"height=\"160\" " +
$"width=\"160\"/>";
@ -548,10 +548,10 @@ public static class DiscordExtensions
=> DigitsToEmotes(i.ToString());
public static string ToTimestamp(this DateTime dateTime, TimestampFormat format = TimestampFormat.RelativeTime)
=> Formatter.Timestamp(dateTime, format);
=> dateTime.Timestamp(format);
public static string ToTimestamp(this DateTimeOffset dateTime, TimestampFormat format = TimestampFormat.RelativeTime)
=> Formatter.Timestamp(dateTime, format);
=> dateTime.Timestamp(format);
public static string GetCommandMention(this DiscordClient client, Bot bot, string command)
=> (bot.status.LoadedConfig.IsDev ?

View file

@ -137,11 +137,11 @@ internal static class CommandCompiler
case MakotoCommandType.SlashCommand:
if (command.IsGroup)
return $$"""
[{{typeof(SlashCommandGroupAttribute).FullName}}("{{command.Name}}", "{{command.Description}}"{{(command.RequiredPermissions is null ? "" : $", {(long)command.RequiredPermissions}")}}, dmPermission: {{command.AllowPrivateUsage.ToString().ToLower()}}, isNsfw: {{command.IsNsfw.ToString().ToLower()}})]
[{{typeof(SlashCommandGroupAttribute).FullName}}("{{command.Name}}", "{{command.Description}}"{{(command.RequiredPermissions is null ? "" : $", {(long)command.RequiredPermissions}")}}, {{(command.AllowPrivateUsage ? string.Empty : "allowedContexts: [InteractionContextType.Guild]")}}, isNsfw: {{command.IsNsfw.ToString().ToLower()}})]
""";
else
return $$"""
[{{typeof(SlashCommandAttribute).FullName}}("{{command.Name}}", "{{command.Description}}"{{(command.RequiredPermissions is null ? "" : $", {(long)command.RequiredPermissions}")}}, dmPermission: {{command.AllowPrivateUsage.ToString().ToLower()}}, isNsfw: {{command.IsNsfw.ToString().ToLower()}})]
[{{typeof(SlashCommandAttribute).FullName}}("{{command.Name}}", "{{command.Description}}"{{(command.RequiredPermissions is null ? "" : $", {(long)command.RequiredPermissions}")}}, {{(command.AllowPrivateUsage ? string.Empty : "allowedContexts: [InteractionContextType.Guild]")}}, isNsfw: {{command.IsNsfw.ToString().ToLower()}})]
""";
case MakotoCommandType.PrefixCommand:
if (command.IsGroup)
@ -156,7 +156,7 @@ internal static class CommandCompiler
""";
case MakotoCommandType.ContextMenu:
return $$"""
[{{typeof(ContextMenuAttribute).FullName}}({{typeof(ApplicationCommandType).FullName}}.{{Enum.GetName(typeof(ApplicationCommandType), command.ContextMenuType)}}, "{{command.Name}}", dmPermission: {{command.AllowPrivateUsage.ToString().ToLower()}}, isNsfw: {{command.IsNsfw.ToString().ToLower()}})]
[{{typeof(ContextMenuAttribute).FullName}}({{typeof(ApplicationCommandType).FullName}}.{{Enum.GetName(typeof(ApplicationCommandType), command.ContextMenuType)}}, "{{command.Name}}", {{(command.AllowPrivateUsage ? string.Empty : "allowedContexts: [InteractionContextType.Guild]")}}, isNsfw: {{command.IsNsfw.ToString().ToLower()}})]
""";
default:

View file

@ -260,7 +260,7 @@ internal static class DisCatSharpExtensionsLoader
DebugStartup = true
});
if (bot.status.CurrentAppHash != bot.status.LoadedConfig.DontModify.LastKnownHash)
if (bot.status.CurrentAppHash != bot.status.LoadedConfig.DontModify.LastKnownHash && Directory.Exists("CompiledCommands"))
{
Log.Debug("Clearing cached Commands..");
await FileExtensions.CleanupFilesAndDirectories(new(), Directory.GetFiles("CompiledCommands").ToList());

View file

@ -14,10 +14,13 @@ internal static class SyncTasks
{
internal static async Task GuildDownloadCompleted(Bot bot, DiscordClient sender, GuildDownloadCompletedEventArgs e)
{
_ = Task.Run(async () =>
{
if (bot.status.DiscordGuildDownloadCompleted)
return;
bot.status.DiscordGuildDownloadCompleted = true;
_ = Task.Run(async () =>
{
Log.Information("I'm on {GuildsCount} guilds.", e.Guilds.Count);
_ = Task.Run(async () =>
@ -121,8 +124,14 @@ internal static class SyncTasks
}).Add(bot);
}
internal static DateTime lastSyncTaskTime = DateTime.MinValue;
internal static async Task ExecuteSyncTasks(Bot bot, DiscordShardedClient shardedClient)
{
if (lastSyncTaskTime.GetTimespanSince() < TimeSpan.FromSeconds(30))
return;
lastSyncTaskTime = DateTime.UtcNow;
var Guilds = shardedClient.GetGuilds();
ObservableList<Task> runningTasks = new();

View file

@ -1,6 +1,7 @@
<h1 align="center">Makoto</h1>
<p align="center"><img src="ProjectMakoto/Assets/Prod.png" width=250 align="center"></p>
<p align="center" style="font-weight:bold;">A feature packed discord bot!</p>
<a href="#getting-makoto" ><p align="center"><img src="ProjectMakoto/Assets/AddToServer.png" width=350 align="center"></p></a>
<p align="center"><img src="https://github.com/Fortunevale/ProjectMakoto/actions/workflows/dev.yml/badge.svg?branch=dev" align="center">
<p align="center"><img src="https://img.shields.io/github/contributors/Fortunevale/ProjectMakoto" align="center"> <img src="https://img.shields.io/github/issues-raw/Fortunevale/ProjectMakoto" align="center"></p>
@ -44,7 +45,7 @@ Makoto has a lot of features, current notable features are:
<br></br>
## Getting Makoto
## The bot is no longer publicly available. Feel free to host it yourself.
## [Click here to invite the bot](https://discord.com/api/oauth2/authorize?client_id=947716263394824213&permissions=8&scope=bot%20applications.commands)
- Phishing Protection is enabled by default, people will be banned if they send a link known to be malicious. To change this, run `/config phishing`.
- Automatic User/Bot Token invalidation is turned on by default. If you don't know what this means, just leave it on. If you know what this means and you don't want this happen, run `/config tokendetection` to disable it.

View file

@ -1,21 +1,22 @@
{
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
"extends": [
"config:recommended"
],
"baseBranches": [
"dev"
"config:base"
],
"baseBranches": ["dev"],
"prHourlyLimit": 9,
"bumpVersion": "prerelease",
"packageRules": [
{
"excludePackagePatterns": [ "Extensions" ],
"matchPackagePrefixes": [ "DisCatSharp" ],
"groupName": "discatsharp",
"automerge": true,
"matchPackageNames": [
"!/Extensions/",
"DisCatSharp{/,}**"
]
"automerge": false,
"enabled": false
},
{
"managers": ["github-actions"],
"enabled": false
}
],
"git-submodules": {