Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(Onboarding): add edit method #1011

Open
wants to merge 123 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
123 commits
Select commit Hold shift + click to select a range
40b1009
onboarding temp
Victorsitou Jan 6, 2023
037b858
Merge branch 'onboarding-temp' into feat/guild-onboarding
Victorsitou Feb 7, 2023
071c719
fix
Victorsitou Feb 9, 2023
76a8911
fix: remove onboarding edit
Victorsitou Feb 9, 2023
bbe55e9
feat: add new stuff
Victorsitou Feb 9, 2023
53a3f54
feat: remove stuff
Victorsitou Feb 9, 2023
292922f
revert
Victorsitou Feb 9, 2023
0d7313b
remove unnecessary stuff
Victorsitou Feb 9, 2023
183a6f6
revert unnecessary stuff
Victorsitou Feb 9, 2023
0b9ddd8
2.8 -> 2.9
Victorsitou Feb 9, 2023
2f0b741
fix: tests
Victorsitou Feb 9, 2023
de1424c
types
Victorsitou Feb 9, 2023
5f53a1f
feat: change the way emoji is handled
Victorsitou Feb 21, 2023
4ba2bd4
Merge remote-tracking branch 'upstream/master' into feat/guild-onboar…
Victorsitou Feb 21, 2023
a8fc694
docs: change changelog name
Victorsitou Feb 21, 2023
a86e7e8
fix: nox
Victorsitou Feb 21, 2023
af3f09c
fix: docs
Victorsitou Feb 21, 2023
5c52ba9
docs: this doesn't need permission
Victorsitou Feb 21, 2023
f57a29d
get -> fetch
Victorsitou Feb 26, 2023
2646122
Merge remote-tracking branch 'upstream/master' into feat/guild-onboar…
Victorsitou Mar 2, 2023
a7846ef
refactor: use `emoji._to_partial().to_dict()` instead
Victorsitou Mar 2, 2023
a62cd2a
misc: remove some todos/notes
Victorsitou Mar 2, 2023
7bce38c
fix: don't store useless id
Victorsitou Mar 2, 2023
90d9813
fix: improve code
Victorsitou Mar 2, 2023
cf92da3
feat: use Guild.get_channel instead of private attribute
Victorsitou Mar 2, 2023
2c704bd
feat: add `roles` and `channels` attributes to `OnboardingPromptOption`
Victorsitou Mar 2, 2023
4b0f2b3
tests: change OnboardingPrompt fixture
Victorsitou Mar 2, 2023
7e4998d
fix: this doesn't need state anymore
Victorsitou Mar 2, 2023
4659744
feat: remove useless x-super-properties
Victorsitou Mar 2, 2023
8782692
docs: apply suggestions
Victorsitou Mar 2, 2023
091d1a8
lint: fix pyright
Victorsitou Mar 2, 2023
2f4bcaa
Merge branch 'feat/guild-onboarding' of https://github.com/Victorsito…
Victorsitou Mar 2, 2023
61ddcf4
changelog: get -> fetch
Victorsitou Mar 3, 2023
1d8cd92
feat: use `_emoji_from_name_id` instead
Victorsitou Mar 3, 2023
6aa5f63
Merge branch 'master' into feat/guild-onboarding
Victorsitou Mar 3, 2023
53762b3
Merge branch 'master' into feat/guild-onboarding
Victorsitou Mar 8, 2023
5afb86a
tests: remove repr test
Victorsitou Mar 8, 2023
b16f9b5
docs: remove duplicate description
Victorsitou Mar 8, 2023
d12d625
Merge branch 'feat/guild-onboarding' of https://github.com/Victorsito…
Victorsitou Mar 8, 2023
d71866d
docs: update
Victorsitou Apr 1, 2023
2b81f4c
revert!: audit logs :c
Victorsitou Apr 1, 2023
eda527e
Merge remote-tracking branch 'upstream/master' into feat/guild-onboar…
Victorsitou Apr 1, 2023
98daea9
tests: fix test
Victorsitou Apr 1, 2023
aa528cf
docs: update
Victorsitou Apr 1, 2023
dae932b
feat: apply code suggestions
Victorsitou Apr 1, 2023
4228c60
refactor: make emoji handling easier
Victorsitou Apr 1, 2023
07d839b
types: make OnboardingPromptOption.description optional
Victorsitou Apr 1, 2023
52a487c
move stuff
Victorsitou Apr 1, 2023
7466f3a
refactor: avoid `_from_data` and create object in `__init__`
Victorsitou Apr 1, 2023
e08cf9f
test: update test
Victorsitou Apr 1, 2023
cfab72d
misc: minor fixes
Victorsitou Apr 1, 2023
7a1e2b2
chore: rename `roles_ids`/`channels_ids`
shiftinv Apr 1, 2023
c2ce2cc
docs: move stuff to Discord Model
Victorsitou Apr 2, 2023
d9d0c00
typing: add type annotations
Victorsitou Apr 2, 2023
7dd172f
Merge branch 'feat/guild-onboarding' of https://github.com/Victorsito…
Victorsitou Apr 2, 2023
90b746c
tests: fix text
Victorsitou Apr 2, 2023
b70ba05
chore: run codemod
Victorsitou Apr 2, 2023
adc4b01
Apply suggestions from code review
Victorsitou Apr 2, 2023
034b360
Merge remote-tracking branch 'upstream/master' into feat/guild-onboar…
Victorsitou Apr 8, 2023
32b870c
docs: update docs
Victorsitou Apr 8, 2023
9fc5769
Merge branch 'feat/guild-onboarding' of https://github.com/Victorsito…
Victorsitou Apr 8, 2023
59cf67b
docs: match docs of the same stuff
Victorsitou Apr 8, 2023
39790ac
docs: update docs
Victorsitou Apr 8, 2023
e46d50a
Merge remote-tracking branch 'upstream/master' into feat/guild-onboar…
Victorsitou Apr 17, 2023
a99c828
feat(Onboarding): add edit method
Victorsitou Apr 19, 2023
d0cbc5d
chore(lint): fix
Victorsitou Apr 19, 2023
14e76d4
docs: add docs
Victorsitou Apr 19, 2023
f695832
docs: document mode
Victorsitou Apr 20, 2023
ced062c
Merge remote-tracking branch 'upstream/master' into feat/edit-guild-o…
Victorsitou Apr 22, 2023
63c08f0
feat!: rename `edit_guild_onboarding`
Victorsitou Apr 22, 2023
9169cc3
revert: fix 928 changelog
Victorsitou Apr 22, 2023
ba9a1b8
docs: add changelog entry
Victorsitou Apr 22, 2023
ee0a969
feat: make it kwargs
Victorsitou Apr 23, 2023
06589f0
docs: update docs
Victorsitou Apr 23, 2023
15be7cb
feat: edit onboarding parameters are optional
Victorsitou Apr 25, 2023
b1edff0
revert: `_id` property
Victorsitou Apr 25, 2023
b8b3b4c
docs: use Attributes instead of Parameters
Victorsitou Apr 25, 2023
ac1e322
feat(OnboardinMode): `onboarding_x` to `x`
Victorsitou Apr 25, 2023
c547dcc
feat: use `PartialEmoji.to_dict` instead
Victorsitou Apr 25, 2023
07cfc32
docs: update mode docs
Victorsitou Apr 25, 2023
d1b46aa
revert: use `id` instead
Victorsitou Apr 29, 2023
e44f380
fix: `self.emoji.to_dict()` raising an error is emoji is `Emoji`
Victorsitou Apr 29, 2023
ed04464
docs: add required permissions
Victorsitou Jun 12, 2023
c99db01
Merge remote-tracking branch 'upstream/master' into feat/edit-guild-o…
Victorsitou Jun 12, 2023
64e4741
Merge remote-tracking branch 'upstream/master' into feat/edit-guild-o…
Victorsitou Jul 13, 2023
8c436cc
chore: it's 2.10 now
Victorsitou Jul 13, 2023
dab5348
fix: description isn't required
Victorsitou Jul 14, 2023
d0a5f7f
Merge remote-tracking branch 'upstream/master' into feat/edit-guild-o…
Victorsitou Jul 15, 2023
aa05df3
docs: resolve documentation reviews
Victorsitou Jul 15, 2023
8e15340
refactor: `id` is always available
Victorsitou Jul 15, 2023
8087ef5
fix: remove local check for `roles` and `channels`
Victorsitou Jul 15, 2023
414e35f
fix: don't use deprecated name
Victorsitou Jul 15, 2023
59b49d6
refactor: use state instead of guild
Victorsitou Jul 15, 2023
b188bd5
types(onboarding): use PartialEmoji instead
Victorsitou Jul 15, 2023
ac89b66
changelog: remove old and edit new
Victorsitou Jul 15, 2023
204d28f
Merge remote-tracking branch 'upstream/master' into feat/edit-guild-o…
Victorsitou Aug 11, 2023
fb1852c
docs: mention parameters are optional
Victorsitou Aug 11, 2023
6191b36
fix: add overload to `OnboardingPromptOption`
Victorsitou Aug 11, 2023
681747c
tests: state doesn't have id
Victorsitou Aug 11, 2023
fc419cc
docs: update changelog
Victorsitou Aug 11, 2023
338e0dd
Merge remote-tracking branch 'upstream/master' into feat/edit-guild-o…
Victorsitou Mar 22, 2024
322efc4
feat: resolve conversations
Victorsitou Mar 22, 2024
5b74748
Merge remote-tracking branch 'upstream/master' into feat/edit-guild-o…
Victorsitou Mar 22, 2024
65b8125
Merge branch 'feat/edit-guild-onboarding' of https://github.com/Victo…
Victorsitou Mar 22, 2024
46b15df
fix: import `NotRequired` from extensions instead
Victorsitou Mar 22, 2024
1b10d28
fix: import `NotRequired` from extensions instead 2
Victorsitou Mar 22, 2024
63ad41e
feat: add API defaults
Victorsitou Mar 22, 2024
e357216
docs: update versionadded
Victorsitou Mar 22, 2024
9d088cb
Merge branch 'feat/edit-guild-onboarding' of https://github.com/Victo…
Victorsitou Mar 22, 2024
0d1f987
fix: ups
Victorsitou Mar 27, 2024
b1a16b4
Merge branch 'master' into feat/edit-guild-onboarding
shiftinv Apr 8, 2024
e32be31
Merge branch 'feat/edit-guild-onboarding' of https://github.com/Victo…
Victorsitou May 20, 2024
a1166aa
Merge remote-tracking branch 'upstream/master' into feat/edit-guild-o…
Victorsitou May 20, 2024
0b5ddae
refactor: remove `state` from _from_dict
Victorsitou May 20, 2024
d594d9f
docs: add versionchanged
Victorsitou May 20, 2024
2eaeceb
refactor: set `OnboardingPromptOption._guild` after creation
Victorsitou May 20, 2024
f53d6b6
docs: revert roles and channels
Victorsitou May 20, 2024
78a5e2b
refactor: get emoji from `emoji` field
Victorsitou May 20, 2024
c3a7e48
fix: set random id to `OnboardingPrompt`
Victorsitou May 20, 2024
cf34de0
test: update to current behavior
Victorsitou May 20, 2024
7f589ba
chore: run codemod
Victorsitou May 20, 2024
85e3d33
feat: split classes into API model and user-constructible
Victorsitou May 22, 2024
a97c36f
test: update tests to the new changes
Victorsitou May 22, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions changelog/1011.feature.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
Allow editing Onboarding configurations.
- :class:`OnboardingPrompt` and :class:`OnboardingPromptOption` are now user-constructible.
- Add :meth:`Guild.edit_onboarding`.
- Add :attr:`Onboarding.mode`.
6 changes: 6 additions & 0 deletions disnake/enums.py
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,7 @@
"Event",
"ApplicationRoleConnectionMetadataType",
"OnboardingPromptType",
"OnboardingMode",
"SKUType",
"EntitlementType",
)
Expand Down Expand Up @@ -1335,6 +1336,11 @@ class OnboardingPromptType(Enum):
dropdown = 1


class OnboardingMode(Enum):
default = 0
advanced = 1


class SKUType(Enum):
subscription = 5
subscription_group = 6
Expand Down
70 changes: 69 additions & 1 deletion disnake/guild.py
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@
Locale,
NotificationLevel,
NSFWLevel,
OnboardingMode,
ThreadLayout,
ThreadSortOrder,
VerificationLevel,
Expand Down Expand Up @@ -95,6 +96,7 @@
from .app_commands import APIApplicationCommand
from .asset import AssetBytes
from .automod import AutoModTriggerMetadata
from .onboarding import OnboardingPrompt
from .permissions import Permissions
from .state import ConnectionState
from .template import Template
Expand All @@ -109,6 +111,7 @@
MFALevel,
)
from .types.integration import IntegrationType
from .types.onboarding import EditOnboarding as EditOnboardingPayload
from .types.role import CreateRole as CreateRolePayload
from .types.sticker import CreateGuildSticker as CreateStickerPayload
from .types.threads import Thread as ThreadPayload, ThreadArchiveDurationLiteral
Expand Down Expand Up @@ -3700,7 +3703,7 @@ async def create_role(

Creates a :class:`Role` for the guild.

All fields are optional.
All parameters are optional.

You must have :attr:`~Permissions.manage_roles` permission to
do this.
Expand Down Expand Up @@ -4955,6 +4958,71 @@ async def onboarding(self) -> Onboarding:
data = await self._state.http.get_guild_onboarding(self.id)
return Onboarding(data=data, guild=self)

async def edit_onboarding(
self,
*,
prompts: List[OnboardingPrompt] = MISSING,
default_channels: Iterable[Snowflake] = MISSING,
enabled: bool = MISSING,
mode: OnboardingMode = MISSING,
reason: Optional[str] = None,
) -> Onboarding:
"""|coro|

Edits the guild onboarding.

You must have :attr:`.Permissions.manage_guild` and :attr:`.Permissions.manage_roles`
permissions to do this.

All parameters are optional.

.. versionadded:: 2.10

Parameters
----------
prompts: List[:class:`OnboardingPrompt`]
The onboarding's new prompts.
default_channels: Iterable[:class:`abc.Snowflake`]
The onboarding's new default channels.
enabled: :class:`bool`
Whether the onboarding is enabled.
mode: :class:`OnboardingMode`
The onboarding's new mode. This defines the criteria used to satisfy Onboarding
constraints that are required for enabling it.
reason: Optional[:class:`str`]
The reason for editing the guild onboarding. Shows up on the audit log.

Raises
------
HTTPException
Editing the guild onboarding failed.

Returns
-------
:class:`Onboarding`
The newly edited guild onboarding.
"""
edit_payload: EditOnboardingPayload = {}

if prompts is not MISSING:
edit_payload["prompts"] = [p.to_dict() for p in prompts]

if default_channels is not MISSING:
edit_payload["default_channel_ids"] = [c.id for c in default_channels]

if enabled is not MISSING:
edit_payload["enabled"] = enabled

if mode is not MISSING:
edit_payload["mode"] = mode.value

data = await self._state.http.edit_guild_onboarding(
self.id,
**edit_payload,
reason=reason,
)
return Onboarding(data=data, guild=self)


PlaceholderID = NewType("PlaceholderID", int)

Expand Down
16 changes: 16 additions & 0 deletions disnake/http.py
Original file line number Diff line number Diff line change
Expand Up @@ -2289,6 +2289,22 @@ def delete_auto_moderation_rule(
def get_guild_onboarding(self, guild_id: Snowflake) -> Response[onboarding.Onboarding]:
return self.request(Route("GET", "/guilds/{guild_id}/onboarding", guild_id=guild_id))

def edit_guild_onboarding(
self,
guild_id: Snowflake,
*,
reason: Optional[str] = None,
**fields: Any,
) -> Response[onboarding.Onboarding]:
valid_keys = ("prompts", "default_channels_ids", "enabled", "mode")
payload = {k: v for k, v in fields.items() if k in valid_keys}

return self.request(
Route("PUT", "/guilds/{guild_id}/onboarding", guild_id=guild_id),
json=payload,
reason=reason,
)

# SKUs/Entitlements

def get_skus(self, application_id: Snowflake) -> Response[List[sku.SKU]]:
Expand Down
Loading
Loading