Skip to content

refactor: Rewrite the role tags mess#2708

Draft
Paillat-dev wants to merge 12 commits intoPycord-Development:masterfrom
Paillat-dev:feat/role-tags-rewrite
Draft

refactor: Rewrite the role tags mess#2708
Paillat-dev wants to merge 12 commits intoPycord-Development:masterfrom
Paillat-dev:feat/role-tags-rewrite

Conversation

@Paillat-dev
Copy link
Member

@Paillat-dev Paillat-dev commented Feb 6, 2025

Summary

Rewrite the role tags mess.
image

Information

  • This PR fixes an issue.
  • This PR adds something new (e.g. new method or parameters).
  • This PR is a breaking change (e.g. methods or parameters removed/renamed).
  • This PR is not a code change (e.g. documentation, README, typehinting,
    examples, ...).

Checklist

  • I have searched the open pull requests for duplicates.
  • If code changes were made then they have been tested.
    • I have updated the documentation to reflect the changes.
  • If type: ignore comments were used, a comment is also left explaining why.
  • I have updated the changelog to include these changes.

@Paillat-dev Paillat-dev force-pushed the feat/role-tags-rewrite branch from 20d75bb to 696dcbf Compare February 6, 2025 09:02
@Paillat-dev Paillat-dev changed the title refactor: Rewrite the role tags mess refactor!: Rewrite the role tags mess Feb 6, 2025
Copy link
Member

@plun1331 plun1331 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This looks really easy to make backwards compatible, can we just do that and deprecate all the compatibility methods?

@Paillat-dev
Copy link
Member Author

Yeah maybe i'll try, but it sucks when I reused method names to become properties

@Paillat-dev
Copy link
Member Author

What are your thoughts on adding something like an enum, e.g. Role.type to describe the role type ?

@Lulalaby
Copy link
Member

As we previously talked on dcs, the role type enum is the best way. Like plun said, deprecated all current methods and just create the type on role. But the docs should clarify that it's calculated since it's not returned by discord

@Dorukyum Dorukyum self-requested a review February 13, 2025 08:54
@Paillat-dev Paillat-dev force-pushed the feat/role-tags-rewrite branch 2 times, most recently from 0c18960 to 7e7d40e Compare February 15, 2025 13:28
@Paillat-dev Paillat-dev force-pushed the feat/role-tags-rewrite branch from 7e7d40e to 5810fa3 Compare February 15, 2025 13:29
@Paillat-dev Paillat-dev force-pushed the feat/role-tags-rewrite branch from 27a15ee to 54f1baa Compare February 15, 2025 13:54
@Paillat-dev Paillat-dev changed the title refactor!: Rewrite the role tags mess refactor: Rewrite the role tags mess Feb 15, 2025
@Paillat-dev
Copy link
Member Author

Paillat-dev commented Feb 15, 2025

Here is a handy snippet for testing this:

import logging
import os
from datetime import datetime, UTC
from dotenv import load_dotenv

import discord

load_dotenv()

logging.basicConfig(level=logging.DEBUG)

TOKEN = os.getenv("TOKEN_3")

bot = discord.Bot()


@bot.slash_command()
async def test_roles(ctx: discord.ApplicationContext, role: discord.Role):
    await ctx.defer()
    if not ctx.guild:
        return await ctx.respond("This command must be used in a guild.")
    fetched_role = await ctx.guild.fetch_role(role.id)
    await ctx.respond(f"""```
Role:
    {role!r}
Role tags:
    {role.tags!r}
Role tags data:
    {role.tags._data if role.tags else None}

Fetched role:
    {fetched_role!r}
Fetched role tags:
    {fetched_role.tags!r}
Fetched role tags data:
    {fetched_role.tags._data if fetched_role.tags else None}       
```""")

bot.run(TOKEN)

@Paillat-dev
Copy link
Member Author

Do not merge yet

@Paillat-dev
Copy link
Member Author

Any news on this topic ?

@Paillat-dev
Copy link
Member Author

@Lulalaby Any news on this btw ?

@Lulalaby
Copy link
Member

not yet :(

@Paillat-dev
Copy link
Member Author

@Lulalaby News on this 2 ?

@Lulalaby
Copy link
Member

Lulalaby commented Sep 4, 2025

Nope. Still a mess

@Lulalaby Lulalaby added this to the v2.8 milestone Dec 24, 2025
@Lulalaby Lulalaby removed the on hold label Dec 24, 2025
@Paillat-dev Paillat-dev added on hold discord limitation Limitation imposed by discord hold: discussion This pull request needs to be further discussed between maintainers priority: low Low Priority labels Dec 25, 2025
@Paillat-dev Paillat-dev removed this from the v2.8 milestone Dec 28, 2025
@Paillat-dev Paillat-dev added the more info required More information is required to proceed label Dec 28, 2025
@plun1331
Copy link
Member

rewrite it in rust atp

@Paillat-dev
Copy link
Member Author

Yeah. Idk @Lulalaby do you maybe have some updates ?

If not, I'm gonna see if I can clean this up again and we can maybe merge it as is, because it technically works except for one specific edge case (see the enum's documentation). What do yall think ?

@Lulalaby
Copy link
Member

Lulalaby commented Feb 1, 2026

Yes no news here :/ lets go with that (after u fixed conflicts)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

discord limitation Limitation imposed by discord hold: discussion This pull request needs to be further discussed between maintainers more info required More information is required to proceed on hold priority: low Low Priority

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants