Giter Site home page Giter Site logo

jacobcoffee / byte Goto Github PK

View Code? Open in Web Editor NEW
5.0 5.0 2.0 12.2 MB

The Discord bot built for developers

Home Page: https://docs.byte-bot.app/

License: MIT License

Makefile 1.41% Python 38.60% CSS 16.06% HTML 43.34% JavaScript 0.21% Shell 0.04% Mako 0.35%
discord-bot discord-py github-api github-app htmx jinja2 litestar litestar-api nodejs oauth2 vite

byte's Introduction

Hello there, I'm Jacob πŸ‘‹

Website LinkedIn Discord

I'm a Father, Lifelong Student, and Developer!

  • 🌱 Currently working with Python, Javascript, Bash, and learning Rust.
  • 🌟 Contributing to the Litestar Python Framework
  • πŸ‘― Looking to collaborate with other developers.
  • 🧐 Interested in DevOps, Automation, Cloud and Distributed Computing.
  • πŸ’Ό DevOps & System Engineering @ O'Reilly Auto.
  • πŸŽ“ Lifelong Learner & Computer Science Student
  • πŸ“š Reading How's the Culture in Your Kingdom?.
  • πŸ’» Currently enjoying Pop!_OS as my daily-driver OS.
  • ⚑ Fun fact: I maintain an uncomfortably large on-prem homelab.


visitor badge

byte's People

Contributors

alc-alc avatar allcontributors[bot] avatar jacobcoffee avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

Forkers

cofin alc-alc

byte's Issues

Enhancement: Monitor tag(s) from StackOverflow

Summary

Using the StackOverflow API or RSS feed for a given tag or set of tags, allow byte to monitor for new questions and alert to a specific (user-definable) channel.

Basic Example

Drawbacks and Impact

No response

Unresolved questions

This implies some sort of storage of currently sent questions to the guild, as do the user-configurable set of tag(s) and alert channel(s) to set.. so it probably depends on #settin


Note

We utilize Polar.sh to engage in regular as well as pledge-based > sponsorship.

Check out all issues funded or available for funding on our Polar.sh dashboard

  • If you would like to see an issue prioritized, make a pledge towards it!
  • We receive the pledge once the issue is completed & verified
  • This, along with engagement in the community, helps us know which features are a priority to our users.
Fund with Polar

Enhancement: Make welcome message configurable

Summary

The member join event for a guild should be configurable by server owners.

Basic Example

Here:

byte/src/byte/bot.py

Lines 95 to 104 in e69751b

async def on_member_join(self, member: Member) -> None:
"""Handle member join event.
Args:
member: Member object.
"""
await member.send(
f"Welcome to {member.guild.name}! Please make sure to read the rules if you haven't already. "
f"Feel free to ask any questions you have in the help channel."
)
should be updated to something like:

guild_service = await anext(provides_guilds_service(db_session))
_guild = await guild_server.get(pk=context.guild.id)
if _guild.welcome_members:
    await member.send(
        f"Welcome to {member.guild.name}! {_guild_.welcome_message}"
    )

and models.py:Guilds would have these fields added:

welcome_members: Mapped[bool] = mapped_column(default=True)
welcome_message: Mapped[str] = mapped_column(String(500), default="Please make sure to read the rules if you "
                                                                  "haven't already. Feel free to ask any "
                                                                  "questions you have in the help channel.")

Drawbacks and Impact

No response

Unresolved questions

No response


Note

We utilize Polar.sh to engage in regular as well as pledge-based > sponsorship.

Check out all issues funded or available for funding on our Polar.sh dashboard

  • If you would like to see an issue prioritized, make a pledge towards it!
  • We receive the pledge once the issue is completed & verified
  • This, along with engagement in the community, helps us know which features are a priority to our users.
Fund with Polar

Enhancement: Custom Integrations

Summary

We can utilize the new linked roles feature to build custom integrations for third-party services including OpenCollective, GitHub, and others. This is useful to identify sponsors/backers.

  • Create integrations for OpenCollective, GitHub (for sponsors AND other data) and Polar.sh (?)

Basic Example

image

Drawbacks and Impact

No response

Unresolved questions

  • (Ref #6) I want to also pull GitHub non-sponsor data for things like the commit club, where do the following:
    • Find a users GitHub name
    • Connect it to the Discord name
    • (Guild-Specific Setting): For all the target owner (organization/user) repositories, get that GitHub users commit count across all repos (should be configurable), and then assign the user on Discord the corresponding commit club role. See #6 for more details, as this is basically that!

Note

We utilize Polar.sh to engage in regular as well as pledge-based > sponsorship.

Check out all issues funded or available for funding on our Polar.sh dashboard

  • If you would like to see an issue prioritized, make a pledge towards it!
  • We receive the pledge once the issue is completed & verified
  • This, along with engagement in the community, helps us know which features are a priority to our users.
Fund with Polar

Enhancement(Forums): Showcase-type posts receive embed for awesome-* repo

Summary

Some other servers have popular repos that then have an awesome-$REPO repo for related uses. Add an embed to open a PR to add their showcase thing to that repo.

Basic Example

For example: https://github.com/litestar-org/awesome-litestar/

  • User posts new forum post in #showcase
  • @byte-bot-app replies with an embed to the guilds' assigned awesome-$repo inviting the user to open a PR to update the repo with this new showcase thing.

Think: User posts XYZ built with $MyLib -> Embed -> Open PR -> We see this in the repo:

### Built with `$MyLib`

- [thing1](https://zombo.com)
- [New thing from user above](https://zombo.com)

Drawbacks and Impact

This raises another issue on unique commands like this that probably wouldn't be useful en masse for support custom commands per-guild. However, with per-guild configs foundation laid in #9, we can support this.

Unresolved questions

Would require a showcase (or similarly named) forum channel to exist. We can bootstrap that if not, or guild can configure/supply existing channel ID


Note

We utilize Polar.sh to engage in regular as well as pledge-based > sponsorship.

Check out all issues funded or available for funding on our Polar.sh dashboard

  • If you would like to see an issue prioritized, make a pledge towards it!
  • We receive the pledge once the issue is completed & verified
  • This, along with engagement in the community, helps us know which features are a priority to our users.
Fund with Polar

Enhancement: Sponsor integration

Summary

Users already set up their GitHub organization/usernames. With this, we should be able to retrieve sponsor data such as sponsor links. We can allow guild owners to do a !sponsor command to show a nice embed with sponsor links, allow users to query the org (or any other org really) to see total donated, last donations, list of sponsors (admin only), etc.

There is a lot we can do here and it would be a good feature add

Basic Example

No response

Drawbacks and Impact

No response

Unresolved questions

  • We may need to offer some configuration around opencollective account name, polar.sh account name, etc. if it differs from the GitHub user/org.

Note

We utilize Polar.sh to engage in regular as well as pledge-based > sponsorship.

Check out all issues funded or available for funding on our Polar.sh dashboard

  • If you would like to see an issue prioritized, make a pledge towards it!
  • We receive the pledge once the issue is completed & verified
  • This, along with engagement in the community, helps us know which features are a priority to our users.
Fund with Polar

Bug: Byte crashes if a post with 5 tags is marked as "Solved"

Description

If a post has 5 tags and if Byte attempts to mark it as "Solved", it crashes. This is due to the "tags per post" limit of 5. Fix is to remove a tag so the "Solved" tag can be added to the post.

URL to code causing the issue

No response

MCVE

# Your MCVE code here

Steps to reproduce

1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error

Screenshots

"In the format of: ![SCREENSHOT_DESCRIPTION](SCREENSHOT_LINK.png)"

Logs

No response

Byte Project Version

main

Platform

  • Linux
  • Mac
  • Windows
  • Other (Please specify in the description above)

Enhancement: Add guild-specific settings

Summary

Currently things like command prefix, help channel ID, etc. are hard coded.

To do anything useful past one guild we need to stand up a database schema that allows for settings thing per-guild.

Basic Example

Here is a rough stub that needs worked on. I think (?) that we should introduce a new path under src/ for database things specifically, so that they can be shared between the bot and web service.

"""Shared models.

.. todo:: This is mostly a stub package that needs to be
    fleshed out.
"""

from sqlalchemy import BigInteger, Boolean, ForeignKey, String, Table
from sqlalchemy.orm import Mapped, mapped_column, relationship

from src.database.orm import TimestampedDatabaseModel

allowed_roles_table = Table(
    "allowed_roles",
    TimestampedDatabaseModel.metadata,
    mapped_column("github_config_id", ForeignKey("github_configs.id"), primary_key=True),
    mapped_column("role_id", BigInteger, primary_key=True),
)


class GuildConfig(TimestampedDatabaseModel):
    __tablename__ = "guild_configs"

    guild_id: Mapped[int] = mapped_column(BigInteger, primary_key=True)
    prefix: Mapped[str] = mapped_column(String(5), nullable=False, server_default="!", de

    help_channel_id: Mapped[int] = mapped_column(BigInteger, index=True)
    github_config: Mapped["GitHubConfig"] = relationship("GitHubConfig", uselist=False, back_populates="guild_config")


class GitHubConfig(TimestampedDatabaseModel):
    __tablename__ = "github_configs"

    guild_id: Mapped[int] = mapped_column(BigInteger, ForeignKey("guild_configs.guild_id"), nullable=False)
    discussion_sync: Mapped[bool] = mapped_column(Boolean, default=False)
    github_organization: Mapped[str] = mapped_column(String, nullable=True)
    github_repository: Mapped[str] = mapped_column(String, nullable=True)
    sync_label: Mapped[str] = mapped_column(String, nullable=True)
    issue_linking: Mapped[bool] = mapped_column(Boolean, default=False)
    comment_linking: Mapped[bool] = mapped_column(Boolean, default=False)
    pep_linking: Mapped[bool] = mapped_column(Boolean, default=False)

    allowed_roles: Mapped[list[int]] = relationship(
        "Role",
        secondary=allowed_roles_table,
        back_populates="github_configs",
    )

    guild_config: Mapped[GuildConfig] = relationship("GuildConfig", back_populates="github_config")


class Role(TimestampedDatabaseModel):
    __tablename__ = "roles"

    id: Mapped[int] = mapped_column(BigInteger, primary_key=True)

    github_configs: Mapped[list[GitHubConfig]] = relationship(
        "GitHubConfig",
        secondary=allowed_roles_table,
        back_populates="allowed_roles",
    )

Drawbacks and Impact

Complexity.

Unresolved questions

  • Are there any configurable things we would like to add on top of the above example?

Enhancement: Link GitHub items

Summary

Auto-link GitHub issues, PRs, discussions, etc. when a user provides a referencable link to one.

Exactly what the great Monty Python bot does, just so we can do it for extra features/learning πŸ˜„

Should put our own spin on it:

  • I would like admins to be able to expand/collapse embeds instead of only the author
  • Maybe we can have a button that also is "Update issue/PR/Discussion" and it POSTs a link as the Byte GitHub bot to the discord forum/message link so others can see what was talked about

Basic Example

  1. User posts "hello i made litestar-org/litestar#2628"
  2. Byte replies with embed of this

Drawbacks and Impact

  • If we stick hard into GitHub only, we won't be able to easily refactor later for Gitlab, and I'd also like to do PEPs and discuss.python.org posts/comments

Unresolved questions

Requires per-guild configuration as repositories are unique across servers


Note

We utilize Polar.sh to engage in regular as well as pledge-based > sponsorship.

Check out all issues funded or available for funding on our Polar.sh dashboard

  • If you would like to see an issue prioritized, make a pledge towards it!
  • We receive the pledge once the issue is completed & verified
  • This, along with engagement in the community, helps us know which features are a priority to our users.
Fund with Polar

Enhancement: Ruff-ify Code

Summary

It would be nice to run Ruff against given code

  • This includes the current ruff check and the eventual black-replacement, Ruff Format

Like we do here:
image

Basic Example

No response

Drawbacks and Impact

No response

Unresolved questions

No response


Note

We utilize Polar.sh to engage in regular as well as pledge-based > sponsorship.

Check out all issues funded or available for funding on our Polar.sh dashboard

  • If you would like to see an issue prioritized, make a pledge towards it!
  • We receive the pledge once the issue is completed & verified
  • This, along with engagement in the community, helps us know which features are a priority to our users.
Fund with Polar

Enhancement: Custom Commands

Summary

#38 presents a good first use case for this, because it kind've seems like that wouldn't be useful for all guilds.

Guilds should have the capability to create unique-to-guild custom commands that only apply to them.
This would be managed, eventually, by some web UI dashboard.

Basic Example

Guilds can create custom commands in some eventual dashboard

  1. Visit dashboard
  2. "Create custom command"
  3. Add new command to do thing

Drawbacks and Impact

Maybe #38 is useful for all guilds, and having it as a feature will encourage these repositores/libraries to make more awesome-$thing repos.

Unresolved questions

Could we allow creation and management of custom commands via Discord UI. Maybe by allowing (advanced) users to send markdown blocks of their Python code?

  1. User: byte new command
  2. Byte: Reply to me with what it is, ill see if its valid and we can test it
  3. User:
@command(
        name="ping",
        help="Run `!ping` or `!p` to get a `pong!` response.",
        aliases=["p"],
        brief="Run `!ping` or `!p` to get a `pong!` response.",
        description="Ping the bot.",
    )
    async def ping(self, ctx: Context) -> None:
        """Responds with 'pong'."""
        await ctx.send(f"pong to the {ctx.guild.name} guild!")
  1. Byte: Test/validate -> place it into a class CustomCommands(Cog) that is loaded only for that guild (❓)

Or, for 3, maybe we can just abstract much of this with something like
/newcmd name="ping" help="do the roar" aliases="p" action="send('hello world')"


Note

We utilize Polar.sh to engage in regular as well as pledge-based > sponsorship.

Check out all issues funded or available for funding on our Polar.sh dashboard

  • If you would like to see an issue prioritized, make a pledge towards it!
  • We receive the pledge once the issue is completed & verified
  • This, along with engagement in the community, helps us know which features are a priority to our users.
Fund with Polar

Enhancement: Create GitHub issue inside of Discord

Summary

Create GitHub issue from thread, forum post, or comment

  • We should be able to pass in (optional) parameters like the issue type (bug, docs, enhancement, etc)

Basic Example

  1. User says something novel, or mentions a bug
  2. Guild staff clicks the ellipsis -> Apps -> Create GitHub issue (Example image)
    image
  3. or, guild staff replies to message "@byte create GitHub issue"

Drawbacks and Impact

No response

Unresolved questions

No response


Note

We utilize Polar.sh to engage in regular as well as pledge-based > sponsorship.

Check out all issues funded or available for funding on our Polar.sh dashboard

  • If you would like to see an issue prioritized, make a pledge towards it!
  • We receive the pledge once the issue is completed & verified
  • This, along with engagement in the community, helps us know which features are a priority to our users.
Fund with Polar

Enhancement(byte): On leave events

Summary

On Byte's removal or leave from a guild, we need to track this.

Basic Example

Drawbacks and Impact

No response

Unresolved questions

  • We should probably continue to store all data, so that if Byte is invited back we can offer "Restore previous config? or start fresh?" options.

Note

We utilize Polar.sh to engage in regular as well as pledge-based > sponsorship.

Check out all issues funded or available for funding on our Polar.sh dashboard

  • If you would like to see an issue prioritized, make a pledge towards it!
  • We receive the pledge once the issue is completed & verified
  • This, along with engagement in the community, helps us know which features are a priority to our users.
Fund with Polar

Test Issue created via GitHubKit SDK

This is a test issue body.


Note

We utilize Polar.sh to engage in regular as well as pledge-based > sponsorship.

Check out all issues funded or available for funding on our Polar.sh dashboard

  • If you would like to see an issue prioritized, make a pledge towards it!
  • We receive the pledge once the issue is completed & verified
  • This, along with engagement in the community, helps us know which features are a priority to our users.
Fund with Polar

Enhancement: Gamify Contributions

Summary

One way that I have gamified contributions for a project is to have a "commit club" type system, where users commit to an organization or repository and are awarded some vanity role (Commit Club: 1, Commit Club: 25, Commit Club: 500, etc.)

This has so far been done manually.

It would be nice to automate this by having a configurable repo or organization (all repos, or certain org's repos (configurable))

Basic Example

  • User joins guild
  • User visits #commit-club, reads instructions to click link to link their GitHub and Discord accounts
  • Byte internally processes this new user, searches the configured repo(s), and gives the user some arbitrary commit count (from 0+)
  • Once the user reaches the (configurable) commit club limit, they are assigned the vanity role. e.g. User hits 5 commits, they are given the Commit Club: 5 role.

SerenityOS also does this, but I am pretty sure it's all manual
image

Drawbacks and Impact

It is opt in, Discord does not supply linked accounts and even then not all users link their accounts.

Unresolved questions

How? This will rely on the user opting in via some GitHub OAuth2 flow.


Note

We utilize Polar.sh to engage in regular as well as pledge-based > sponsorship.

Check out all issues funded or available for funding on our Polar.sh dashboard

  • If you would like to see an issue prioritized, make a pledge towards it!
  • We receive the pledge once the issue is completed & verified
  • This, along with engagement in the community, helps us know which features are a priority to our users.
Fund with Polar

Enhancement: Secure inspection and evaluation of arbitrary code

Summary

Utilize a service like Piston to provide the capabilities of running/formatting/evaluating arbitrary code snippets via slash commands or app commands.

Basic Example

Drawbacks and Impact

  • Requirement of: #5

On the topic of "Why Piston?":
The only other viable option I have found is https://github.com/python-discord/snekbox but it is limited to Python code.
Piston allows for all desired languages (Rust, Swift, Python, etc.) and a lot more

Unresolved questions

No response


Note

We utilize Polar.sh to engage in regular as well as pledge-based > sponsorship.

Check out all issues funded or available for funding on our Polar.sh dashboard

  • If you would like to see an issue prioritized, make a pledge towards it!
  • We receive the pledge once the issue is completed & verified
  • This, along with engagement in the community, helps us know which features are a priority to our users.
Fund with Polar

Refactor: Move into proper project config

Summary

After some testing it seems we can do what we want.

We should clean things up to start building upon.

  • Build from an inherited base class instead of def run
  • Other "standard" bot design patterns
  • Update web/ against the latest fullstack reference
  • Proper logging to be shared between the two?

Basic Example

something like this, I think

➜ ntp bytestructexample && mkdir -p src/{web/{lib,domain},bot/{ext},lib/{db,log}} && tree
  bytestructexample
 └─  src
    β”œβ”€  bot
    β”‚  └─  {ext}
    β”œβ”€  lib
    β”‚  β”œβ”€  log
    β”‚  └─  db
    └─  web
       β”œβ”€  domain
       └─  lib

Drawbacks and Impact

No response

Unresolved questions

No response

Enhancement: Add `gethelp` embed

Summary

Add a /gethelp|!gethelp command that replies with a nice embed for users to see with quicklinks/data on getting help fast.

Basic Example

@commands.command(name="gethelp")
    async def helpme(self, ctx: commands.Context) -> None:
        """Provides help resources in a card-style embed with a thumbnail."""
        issues = "https://github.com/litestar-org/litestar/issues"
        embed = Embed(title="Need Help?", color=0x42b1a8)  # Updated color to #42b1a8
        embed.add_field(name="GitHub Issues", value=f"[Click here to report an issue]({issues})")
        embed.add_field(name="Help Channel", value="<#1064114019373432912>")
        embed.add_field(name="MCVE", value="Please provide an MCVE for us to run if applicable.")
        embed.set_thumbnail(
            url="https://github.com/litestar-org/branding/blob/main/assets/Branding%20-%20PNG%20-%20Transparent/Badge%20-%20White.png?raw=true")

        await ctx.send(embed=embed)

Looks like:

image

Drawbacks and Impact

No response

Unresolved questions

  1. Can we "templatize" embeds like this so that they inherit specific UI each time without the boilerplate?
  2. When #9 is implemented, we should allow guilds to assign an image URL (or get favicon by default), assign issues link (default to the guild-configured repo + /issues), and then the Help Channel ID should be inherited when set at the guild level.

Enhancement: Searchable Documentation and PyPI

Summary

This isn't super important as Monty Python bot provides this, but in the potential interest of being a one-stop bot, implement searchable documentation and PyPI commands.

Basic Example

No response

Drawbacks and Impact

No response

Unresolved questions

No response


Note

We utilize Polar.sh to engage in regular as well as pledge-based > sponsorship.

Check out all issues funded or available for funding on our Polar.sh dashboard

  • If you would like to see an issue prioritized, make a pledge towards it!
  • We receive the pledge once the issue is completed & verified
  • This, along with engagement in the community, helps us know which features are a priority to our users.
Fund with Polar

Bug: Fix typo on home page

Description

grea -> great

URL to code causing the issue

developer-oriented Discord servers with grea tools to make their

MCVE

No response

Steps to reproduce

No response

Screenshots

image

Logs

No response

Byte Project Version

x

Platform

  • Linux
  • Mac
  • Windows
  • Other (Please specify in the description above)

Note

We utilize Polar.sh to engage in regular as well as pledge-based > sponsorship.

Check out all issues funded or available for funding on our Polar.sh dashboard

  • If you would like to see an issue prioritized, make a pledge towards it!
  • We receive the pledge once the issue is completed & verified
  • This, along with engagement in the community, helps us know which features are a priority to our users.
Fund with Polar

Enhancement: Add `mcve` command

Summary

Add a command that displays a nice embed asking for an MCVE.

The initial forum post already does this, but this could be used anywhere not just forums and also can save us from typing "I cant produce this, can you supply an MCVE" because people didnt read the initial one.

  • Should be a slash command that is ephemaral except for the reply

Basic Example

/mcve

Byte

Hi! Please provide us with an [MCVE](https://link-to-what-MCVE-is) so that
we can properly reproduce your issue!

Drawbacks and Impact

@Alc-Alc thinks its rude, but you are already going to have to say

Hey! Thanks for raising this issue.. can you provide an MCVE for us to reproduce?

Unresolved questions

No response

Enhancement(astral): Smart chunking of embed field data

Summary

Embed fields are limited to <1024 characters, so we introduced chunking logic.

for idx, chunk in enumerate(chunk_sequence(formatted_rule_details["explanation"], 1000)):
embed.add_field(name="" if idx else "Explanation", value="".join(chunk), inline=False)

For the most part this does just fine, but it leads to ugly lines in embeds occasionally - and more importantly it can break markdown links provided by the ruff output

image

Basic Example

Make the chunking "smarter" to not break lines at awkward places

Drawbacks and Impact

No response

Unresolved questions

  • how

Note

We utilize Polar.sh to engage in regular as well as pledge-based > sponsorship.

Check out all issues funded or available for funding on our Polar.sh dashboard

  • If you would like to see an issue prioritized, make a pledge towards it!
  • We receive the pledge once the issue is completed & verified
  • This, along with engagement in the community, helps us know which features are a priority to our users.
Fund with Polar

Enhancement: Modal for GitHub issue

Summary

#51 introduced the creation of GitHub issues from an app or slash command, but it would be nice to have a popup modal to custom various things like:

  • Name
  • Description
  • Labels
  • Projects
  • Milestones
  • Assignees

Basic Example

No response

Drawbacks and Impact

No response

Unresolved questions

No response


Note

We utilize Polar.sh to engage in regular as well as pledge-based > sponsorship.

Check out all issues funded or available for funding on our Polar.sh dashboard

  • If you would like to see an issue prioritized, make a pledge towards it!
  • We receive the pledge once the issue is completed & verified
  • This, along with engagement in the community, helps us know which features are a priority to our users.
Fund with Polar

Enhancement (Core Feature): Add thread and forum to GitHub discussion

Summary

The entire idea behind Byte was that there exists no other solution whereby we can take a threaded discussion or forum post on a Discord guild and push it somewhere like GitHub discussions.

There is some bot that makes them indexable, but it uploads it to their own website, and it isn't the perfect solution.

Asks:

  • Have it usable as a command inside of the current thread or forum post. @byte, upload this to GitHub
  • Have it (configurable) automatically attach to any new/current/non-solved thread or forum post and automatically upload it daily/when marked solved/etc.
  • Have a command to detach from a thread or forum post even if it is not marked with the (configurable) Exclude from GitHub tag

Basic Example

  • Have Byte read the thread or forum post
  • Send to GitHub GraphQL API: https://docs.github.com/en/graphql/guides/using-the-graphql-api-for-discussions#creatediscussion
  • Periodically check discussions, mark them as closed when the chosen tag is set. Ideally this is something like Solved or Completed but should be configurable by the guild owner.
  • Additionally, there should be a user-definable tag that allows discussions to not be uploaded at all (maybe it is not relevant, or too abstract.) Something like Exclude from GitHub.

Here, the solved posts should update the relevant GitHub discussion and mark it as closed, and it should make sure to not upload any discussions from the Code Review post.
image

Drawbacks and Impact

Threads do not have tags, so it makes things hard and may be out of scope. Forum posts would be enough for this, and should allow us a lot more flexibility (❓)

Unresolved questions

  • How do we respect Discord tags? (Exclude from GitHub, Solved, etc.)

Note

We utilize Polar.sh to engage in regular as well as pledge-based > sponsorship.

Check out all issues funded or available for funding on our Polar.sh dashboard

  • If you would like to see an issue prioritized, make a pledge towards it!
  • We receive the pledge once the issue is completed & verified
  • This, along with engagement in the community, helps us know which features are a priority to our users.
Fund with Polar

Enhancement: Add a revisit reminder for unresolved posts

Summary

Sometimes we miss or forget to reply to forum posts. If one has not been marked as solved, and there has been little activity, perhaps we can implement a 'revisit reminder' nag system that pings current guild staff to either mark the post as solved or answer the users post.

image

We could also (separate issue needs to be created) probably add an auto-close, but that doesn't feel great to users who have their question missed.

Basic Example

No response

Drawbacks and Impact

No response

Unresolved questions

No response


Note

We utilize Polar.sh to engage in regular as well as pledge-based > sponsorship.

Check out all issues funded or available for funding on our Polar.sh dashboard

  • If you would like to see an issue prioritized, make a pledge towards it!
  • We receive the pledge once the issue is completed & verified
  • This, along with engagement in the community, helps us know which features are a priority to our users.
Fund with Polar

Enhancement: Link forum post(s) to issue

Summary

Background: We have multiple related ⁠help forum posts such as these 2:
image

  • We want to link them to an existing or new issue
  • We cron poll, when the issue is closed the help thread is closed
  • If not closed, cron can poll issue for commits/updates and update the user in the thread

Basic Example

byte link $repo_name#$issue_number

Drawbacks and Impact

Maybe a bad idea in genera because we are keeping what essentially is duplicate help threads open, but they could get lost like these were for days/weeks and so that is a moot point... and so this would ensure they are closed and users know the latest details?

Unresolved questions

No response


Note

We utilize Polar.sh to engage in regular as well as pledge-based > sponsorship.

Check out all issues funded or available for funding on our Polar.sh dashboard

  • If you would like to see an issue prioritized, make a pledge towards it!
  • We receive the pledge once the issue is completed & verified
  • This, along with engagement in the community, helps us know which features are a priority to our users.
Fund with Polar

Enhancement (Core Feature): Create base GitHub app for Byte

Summary

For interactions with GitHub (e.g., anything other than reading) I think it would be best to create a GitHub app for API interaction. We can create discussions, reply on issues (#28, etc.), and more.

Looking across the available packages, https://github.com/yanyongyu/githubkit seems like the best fit. It utilizes httpx, has Octokit-like levels of feature set, async support, and is kept up to date.

Basic Example

  • Create GitHub app
  • Process bot requests, interact with library inside of our project, send to GitHub, and vice versa
  • Listen to requests from GitHub through web server API calls/webhooks

https://docs.github.com/en/apps/creating-github-apps/about-creating-github-apps/deciding-when-to-build-a-github-app

Drawbacks and Impact

No response

Unresolved questions

Project layout could be tricky. Do we have a fourth segment (on top of src/{byte,web,database}) for the GitHub portion, or can we intermingle in the byte "domain"?


Note

We utilize Polar.sh to engage in regular as well as pledge-based > sponsorship.

Check out all issues funded or available for funding on our Polar.sh dashboard

  • If you would like to see an issue prioritized, make a pledge towards it!
  • We receive the pledge once the issue is completed & verified
  • This, along with engagement in the community, helps us know which features are a priority to our users.
Fund with Polar

Enhancement: Add Discord message to GitHub Issue

Summary

We currently have the "Create a GitHub Issue" app, but it would be nice to be able to select a single message and send it into an issue.

Basic Example

image
  • Add new app option for adding the message
  • On click, modal popup to input the issue number.
  • Prefill with the default configured repository, but allow changing to another one inside of the same organization.

Drawbacks and Impact

No response

Unresolved questions

No response


Note

We utilize Polar.sh to engage in regular as well as pledge-based > sponsorship.

Check out all issues funded or available for funding on our Polar.sh dashboard

  • If you would like to see an issue prioritized, make a pledge towards it!
  • We receive the pledge once the issue is completed & verified
  • This, along with engagement in the community, helps us know which features are a priority to our users.
Fund with Polar

Enhancement: Initialize guild data on join

Summary

When @byte-bot-app joins a new guild we need to initialize data from the guild and set the defaults for certain things (prefix, guild name, etc) in the database.

Basic Example

No response

Drawbacks and Impact

No response

Unresolved questions

No response


Note

We utilize Polar.sh to engage in regular as well as pledge-based > sponsorship.

Check out all issues funded or available for funding on our Polar.sh dashboard

  • If you would like to see an issue prioritized, make a pledge towards it!
  • We receive the pledge once the issue is completed & verified
  • This, along with engagement in the community, helps us know which features are a priority to our users.
Fund with Polar

Enhancement: Replace `svg`s with Feather icons

Summary

https://feathericons.dev/ has an installable or local min.js we can import to utilize its iconset.

https://www.npmjs.com/package/feather-icons

Import it or build it, and swap giant svgs with the attrs.

Basic Example

<svg>30 line svg for a circle<svg

becomes

<i data-feather="circle"></i>

Drawbacks and Impact

No response

Unresolved questions

No response


Note

We utilize Polar.sh to engage in regular as well as pledge-based > sponsorship.

Check out all issues funded or available for funding on our Polar.sh dashboard

  • If you would like to see an issue prioritized, make a pledge towards it!
  • We receive the pledge once the issue is completed & verified
  • This, along with engagement in the community, helps us know which features are a priority to our users.
Fund with Polar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.