28 Commits

Author SHA1 Message Date
Paillat
3a111fc998 🐛 Update private attribute access in view handling logic (#52) 2025-12-10 19:48:43 +01:00
renovate[bot]
5295064483 ⬆️ Upgrade actions/checkout action to v6 (#49)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-10 18:16:05 +01:00
renovate[bot]
03daa7e075 ⬆️ Upgrade astral-sh/setup-uv action to v7 (#51)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-10 18:13:05 +01:00
renovate[bot]
093f40ee7a ⬆️ Update lock file (#46)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-10 14:56:32 +00:00
Paillat
6af19f0fb3 feat: Decode application ID from token during server initialization (#50) 2025-12-10 15:55:06 +01:00
Paillat
9e410d03f6 chore: Relax Python version requirement in pyproject.toml to >=3.12, <4.0 (#47) 2025-12-08 19:10:39 +01:00
renovate[bot]
d7d7ad62df ⬆️ Update lock file (#45)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-19 18:20:01 +01:00
renovate[bot]
aebdf2655d ⬆️ Update lock file (#43)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-12 21:37:20 +01:00
renovate[bot]
03d58369b8 ⬆️ Update lock file (#42)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-02 23:29:02 +02:00
renovate[bot]
444d9272f7 ⬆️ Update lock file (#41)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-23 00:20:27 +02:00
renovate[bot]
9d4859caba ⬆️ Update lock file (#40)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-15 10:58:30 +02:00
renovate[bot]
b37d736dc3 ⬆️ Upgrade actions/setup-python action to v6 (#37)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Paillat <paillat@pycord.dev>
2025-09-08 15:53:09 +02:00
renovate[bot]
5f3d6fab73 ⬆️ Update lock file (#38)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-08 15:51:30 +02:00
renovate[bot]
a63e620aad ⬆️ Update lock file (#36)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-08-31 12:55:23 +02:00
renovate[bot]
d4c54e236c ⬆️ Upgrade actions/checkout action to v5 (#35)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-08-31 12:52:15 +02:00
Paillat
7c4f032492 🔧 Update renovate.json to change base branch pattern from "dev" to "main" (#34) 2025-08-31 12:50:53 +02:00
renovate[bot]
041e8bb6e3 ⬆️: migrate renovate config (#33)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-08-31 12:47:56 +02:00
Paillat
2e0e835aa3 🔧 Update renovate config to use nicebots config (#32) 2025-08-31 12:46:52 +02:00
Paillat
36b708f6c4 ⬆️ Upgrade to pycord 2.7 rc1 (#30) 2025-08-31 12:44:33 +02:00
Paillat
2318307378 🚨 Update pyproject.toml to fix type checking ignorer for examples/ (#31) 2025-08-31 12:43:37 +02:00
Paillat
e886d494d9 ⬆️ Update py-cord dependency to paillcord version 2.7.0a3 (#28) 2025-07-21 19:39:34 +02:00
Paillat
ec1efb1fb4 Revert "⬆️ Upgrade Python to ==3.13.* (#21)" (#26) 2025-06-18 10:39:44 +02:00
renovate[bot]
ed5ff75af6 ⬆️ Upgrade Python to ==3.13.* (#21)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Paillat <paillat@pycord.dev>
2025-06-18 10:35:31 +02:00
renovate[bot]
844e557fc9 ⬆️ Upgrade hashicorp/setup-copywrite digest to 32f9f1c (#25)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-18 10:34:19 +02:00
Paillat
99a516b0f0 📝 Remove pre-release from README.md (#23) 2025-05-27 19:56:45 +02:00
pre-commit-ci[bot]
c356d0f74d 👷 pre-commit autoupdate (#19)
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Paillat <me@paillat.dev>
2025-05-27 19:53:20 +02:00
renovate[bot]
8394b56afe ⬆️ Upgrade astral-sh/setup-uv action to v6 (#20)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-25 00:40:48 +02:00
e971ba5f19 ⬆️ Update py-cord dependency to allow for newer versions (#18) 2025-04-17 00:52:16 +02:00
9 changed files with 736 additions and 288 deletions

View File

@@ -9,15 +9,15 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
environment: pypi environment: pypi
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v6
- name: "Install uv" - name: "Install uv"
uses: astral-sh/setup-uv@v5 uses: astral-sh/setup-uv@v7
with: with:
enable-cache: true enable-cache: true
- name: "Set up Python" - name: "Set up Python"
uses: actions/setup-python@v5 uses: actions/setup-python@v6
with: with:
python-version-file: "pyproject.toml" python-version-file: "pyproject.toml"

View File

@@ -9,9 +9,9 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Checkout repository - name: Checkout repository
uses: actions/checkout@v4 uses: actions/checkout@v6
- name: Setup Copywrite - name: Setup Copywrite
uses: hashicorp/setup-copywrite@5e3e8a26d7b9f8a508848ad0a069dfd2f7aa5339 uses: hashicorp/setup-copywrite@32f9f1c86f661b8a51100768976a06f1b281a035
- name: Check Header Compliance - name: Check Header Compliance
run: copywrite headers --plan --config .copywrite.hcl run: copywrite headers --plan --config .copywrite.hcl
@@ -35,15 +35,15 @@ jobs:
name: ${{ matrix.name }} name: ${{ matrix.name }}
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v6
- name: "Install uv" - name: "Install uv"
uses: astral-sh/setup-uv@v5 uses: astral-sh/setup-uv@v7
with: with:
enable-cache: true enable-cache: true
- name: "Set up Python" - name: "Set up Python"
uses: actions/setup-python@v5 uses: actions/setup-python@v6
with: with:
python-version-file: "pyproject.toml" python-version-file: "pyproject.toml"

View File

@@ -21,7 +21,7 @@ repos:
exclude: \.(po|pot|yml|yaml)$ exclude: \.(po|pot|yml|yaml)$
- repo: https://github.com/astral-sh/ruff-pre-commit - repo: https://github.com/astral-sh/ruff-pre-commit
# Ruff version. # Ruff version.
rev: v0.11.5 rev: v0.11.11
hooks: hooks:
# Run the linter. # Run the linter.
- id: ruff - id: ruff

View File

@@ -63,13 +63,9 @@ Built on:
## Installation ## Installation
```bash ```bash
pip install pycord-rest-bot --prerelease=allow pip install pycord-rest-bot
``` ```
<!-- prettier-ignore -->
> [!NOTE]
> The package is currently in pre-release.
<!-- quick-start --> <!-- quick-start -->
## Quick Start ## Quick Start

View File

@@ -21,7 +21,7 @@ class MyView(discord.ui.View):
def __init__(self, *args: Any, **kwargs: Any) -> None: def __init__(self, *args: Any, **kwargs: Any) -> None:
super().__init__(*args, **kwargs) super().__init__(*args, **kwargs)
self.add_item( self.add_item(
discord.ui.Button( discord.ui.Button( # pyright: ignore[reportUnknownArgumentType]
style=discord.ButtonStyle.link, label="GitHub", url="https://github.com/Paillat-dev/pycord-rest" style=discord.ButtonStyle.link, label="GitHub", url="https://github.com/Paillat-dev/pycord-rest"
) )
) )

View File

@@ -10,7 +10,7 @@ authors = [
{ name = "Paillat-dev", email = "me@paillat.dev" } { name = "Paillat-dev", email = "me@paillat.dev" }
] ]
license = "MIT" license = "MIT"
requires-python = "==3.12.*" requires-python = ">=3.12, <4.0"
classifiers = [ classifiers = [
"Development Status :: 3 - Alpha", "Development Status :: 3 - Alpha",
"Intended Audience :: Developers", "Intended Audience :: Developers",
@@ -24,7 +24,7 @@ keywords = ["discord", "bot", "rest", "pycord"]
dependencies = [ dependencies = [
"fastapi>=0.115.11", "fastapi>=0.115.11",
"orjson>=3.10.15", "orjson>=3.10.15",
"py-cord>=2.6.1", "py-cord>=2.7.0rc1",
"pynacl>=1.5.0", "pynacl>=1.5.0",
"uvicorn>=0.34.0", "uvicorn>=0.34.0",
] ]
@@ -98,7 +98,7 @@ reportUnusedCallResult = false
reportAny = false reportAny = false
executionEnvironments = [ executionEnvironments = [
{ root = "src/pycord_rest/_version.py", reportDeprecated = false }, { root = "src/pycord_rest/_version.py", reportDeprecated = false },
{ root = "examples", reportExplicitAny = false, reportUnknownMemberType = false, reportUnusedParameter = false, reportImplicitOverride = false } { root = "examples", reportExplicitAny = false, reportUnknownMemberType = false, reportUnusedParameter = false, reportImplicitOverride = false, reportAttributeAccessIssue = false, reportUnknownVariableType = false },
] ]
[tool.ruff] [tool.ruff]

View File

@@ -1,25 +1,13 @@
{ {
"$schema": "https://docs.renovatebot.com/renovate-schema.json", "$schema": "https://docs.renovatebot.com/renovate-schema.json",
"extends": ["config:recommended"], "extends": [
"baseBranches": ["main"], "local>nicebots-xyz/renovate-config",
"labels": ["deps"], ":semanticPrefixFixDepsChoreOthers",
"ignorePaths": ["requirements.txt"], ":dependencyDashboard"
"commitMessagePrefix": "⬆️", ],
"commitMessageAction": "Upgrade", "forkProcessing": "enabled",
"packageRules": [ "baseBranchPatterns": ["main"],
{ "lockFileMaintenance": {
"matchUpdateTypes": ["pin"], "enabled": true
"commitMessagePrefix": "📌",
"commitMessageAction": "Pin"
},
{
"matchUpdateTypes": ["rollback"],
"commitMessagePrefix": "⬇️",
"commitMessageAction": "Downgrade"
},
{
"matchDatasources": ["pypi"],
"addLabels": ["pypi"]
} }
]
} }

View File

@@ -1,6 +1,7 @@
# Copyright (c) Paillat-dev # Copyright (c) Paillat-dev
# SPDX-License-Identifier: MIT # SPDX-License-Identifier: MIT
import base64
import functools import functools
import logging import logging
import warnings import warnings
@@ -80,23 +81,23 @@ class App(discord.Bot):
self._connection._view_store._ViewStore__verify_integrity() # noqa: SLF001 # pyright: ignore [reportUnknownMemberType, reportAttributeAccessIssue, reportPrivateUsage] self._connection._view_store._ViewStore__verify_integrity() # noqa: SLF001 # pyright: ignore [reportUnknownMemberType, reportAttributeAccessIssue, reportPrivateUsage]
message_id: int | None = interaction.message and interaction.message.id message_id: int | None = interaction.message and interaction.message.id
key = (component_type, message_id, custom_id) key = (component_type, message_id, custom_id)
value = self._connection._view_store._views.get(key) or self._connection._view_store._views.get( # pyright: ignore [reportUnknownVariableType, reportUnknownMemberType, reportPrivateUsage] # noqa: SLF001 value = self._connection._view_store._views.get(key) or self._connection._view_store._views.get( # pyright: ignore [reportPrivateUsage] # noqa: SLF001
(component_type, None, custom_id) (component_type, None, custom_id)
) )
if value is None: if value is None:
return return
view, item = value # pyright: ignore [reportUnknownVariableType] view, item = value
item.refresh_state(interaction) item.refresh_state(interaction)
# Code taken from View._dispatch_item # Code taken from View._dispatch_item
if view._View__stopped.done(): # noqa: SLF001 # pyright: ignore [reportAttributeAccessIssue, reportUnknownMemberType] if view._stopped.done(): # noqa: SLF001 # pyright: ignore [reportPrivateUsage]
return return
if interaction.message: if interaction.message:
view.message = interaction.message view.message = interaction.message
await view._scheduled_task(item, interaction) # noqa: SLF001 # pyright: ignore [reportPrivateUsage, reportUnknownMemberType] await view._scheduled_task(item, interaction) # noqa: SLF001 # pyright: ignore [reportPrivateUsage]
async def _verify_request(self, request: Request) -> None: async def _verify_request(self, request: Request) -> None:
signature = request.headers["X-Signature-Ed25519"] signature = request.headers["X-Signature-Ed25519"]
@@ -270,6 +271,7 @@ class App(discord.Bot):
uvicorn_options["server_header"] = uvicorn_options.get("server_header", False) uvicorn_options["server_header"] = uvicorn_options.get("server_header", False)
config = self._UvicornConfig(self._app, **uvicorn_options) config = self._UvicornConfig(self._app, **uvicorn_options)
server = self._UvicornServer(config) server = self._UvicornServer(config)
self._connection.application_id = int(base64.b64decode(token.split(".")[0] + "==").decode("utf-8"))
try: try:
self.dispatch("connect") self.dispatch("connect")
await server.serve() await server.serve()

950
uv.lock generated

File diff suppressed because it is too large Load Diff