Skip to content

Instantly share code, notes, and snippets.

View Soheab's full-sized avatar
📚

Soheab Soheab

📚
  • 14:01 (UTC +01:00)
View GitHub Profile
@Soheab
Soheab / ideas.md
Last active November 23, 2025 18:38
  • automod commands
  • channel commands
    • name
    • topic
    • thread name
    • overwrites
    • invite
    • typing event
  • user commands
  • nickname
from __future__ import annotations
import datetime
from typing import Any, Literal, Self, overload
import discord
type ValidMediaType = (
str
| Media
| discord.MediaGalleryItem
from __future__ import annotations
from typing import (
Generic,
Optional,
TypeVar,
Any,
TYPE_CHECKING,
)
import discord
@Soheab
Soheab / 0-simple_paginator.py
Last active August 14, 2025 15:30
A simple paginator with three buttons.
from __future__ import annotations
from typing import (
Dict,
Generic,
List,
Optional,
TypeVar,
Any,
TYPE_CHECKING,
Tuple,
@Soheab
Soheab / self_bot.md
Last active November 15, 2024 20:58
Read here how "self.bot" works in a discord.py cog. For a tag called `?tag self.bot` on the dpy server.

What is self.bot and how does it work?

TLDR: it's a custom attribute which you define.

self = class instance
bot = attribute that's usually assigned to the bot instance given in an extension's setup function.

Basically:

class MyCog(Cog):
    # this function is called when we do MyCog()
# for testing:
# import collections
# emoji = collections.namedtuple("emo", ["animated"])(False)
emoji = ... # some (Partial)Emoji object
guild = ... # some Guild object
emojis = guild.emojis
total = len(guild.emojis)
limit = guild.emoji_limit
animated = sum(1 for e in emojis if e.animated)
@Soheab
Soheab / markdown.md
Last active August 10, 2023 21:51
See here the progress of the discord.py library after discontinuation.

The hyperlinks are either links to a gist or discord message in the discord.py server

  • Danny reworks async stuff, breaking changes for all!
@Soheab
Soheab / complete..md
Last active July 15, 2024 05:30
See here a custom check for all types of commands that can be used to check if user has any permissions you pass

See here the "complete" check

"complete" as in it supports app and text commands and has some comments explaining the code. As you may have noticed, there are multiple files in this gist:

Text Cmmands Only Here

Complete

See here the complete check with support for app and text commands:

from typing import Any, Self, overload
import asyncio
import discord
HasChildren = (
discord.ui.Container
| discord.ui.ActionRow
@Soheab
Soheab / wait_for_modal.md
Last active November 18, 2024 20:27
See how to wait for user input using a modal!

Wait for with a Modal

See here an overcomplicated way to wait for input from a user using a modal. Every step is explained using comments.

This is meant to replace Client.wait_for("message") for application commands.

Features

  • Easy way to construct a Modal with one text input field.
  • Easily pass a check from the constructor

Files