mirror of
https://github.com/Cog-Creators/Red-DiscordBot.git
synced 2025-12-06 09:22:31 -05:00
* [3.4] Make invite URL part of public API (#5424)
* Make invite URL public API
* Add doc and RPC
* Lint
* Update redbot/core/core_commands.py
Co-authored-by: Matt <psykzz@users.noreply.github.com>
* Update redbot/core/bot.py
Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
* RPC handling,
* Fix appinfo
* Change docs
* Fix docs
* Change docs
* Update redbot/core/core_commands.py
Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
* Docstring changes
* nit
(cherry picked from commit 6297bfcab6)
Co-authored-by: Stonedestroyer <1307729+Stonedestroyer@users.noreply.github.com>
Co-authored-by: Matt <psykzz@users.noreply.github.com>
Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
* Red->RedBase
Co-authored-by: Stonedestroyer <1307729+Stonedestroyer@users.noreply.github.com>
Co-authored-by: Matt <psykzz@users.noreply.github.com>
Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
This commit is contained in:
@@ -1302,6 +1302,37 @@ class RedBase(
|
|||||||
|
|
||||||
return ret
|
return ret
|
||||||
|
|
||||||
|
async def get_invite_url(self) -> str:
|
||||||
|
"""
|
||||||
|
Generates the invite URL for the bot.
|
||||||
|
|
||||||
|
Does not check if the invite URL is configured to be public
|
||||||
|
with ``[p]inviteset public``. To check if invites are public,
|
||||||
|
use `RedBase.is_invite_url_public()`.
|
||||||
|
|
||||||
|
Returns
|
||||||
|
-------
|
||||||
|
str
|
||||||
|
Invite URL.
|
||||||
|
"""
|
||||||
|
data = await self._config.all()
|
||||||
|
commands_scope = data["invite_commands_scope"]
|
||||||
|
scopes = ("bot", "applications.commands") if commands_scope else None
|
||||||
|
perms_int = data["invite_perm"]
|
||||||
|
permissions = discord.Permissions(perms_int)
|
||||||
|
return discord.utils.oauth_url(self._app_info.id, permissions, scopes=scopes)
|
||||||
|
|
||||||
|
async def is_invite_url_public(self) -> bool:
|
||||||
|
"""
|
||||||
|
Determines if invite URL is configured to be public with ``[p]inviteset public``.
|
||||||
|
|
||||||
|
Returns
|
||||||
|
-------
|
||||||
|
bool
|
||||||
|
:code:`True` if the invite URL is public.
|
||||||
|
"""
|
||||||
|
return await self._config.invite_public()
|
||||||
|
|
||||||
async def is_admin(self, member: discord.Member) -> bool:
|
async def is_admin(self, member: discord.Member) -> bool:
|
||||||
"""Checks if a member is an admin of their guild."""
|
"""Checks if a member is an admin of their guild."""
|
||||||
try:
|
try:
|
||||||
|
|||||||
@@ -360,13 +360,7 @@ class CoreLogic:
|
|||||||
str
|
str
|
||||||
Invite URL.
|
Invite URL.
|
||||||
"""
|
"""
|
||||||
app_info = await self.bot.application_info()
|
return await self.bot.get_invite_url()
|
||||||
data = await self.bot._config.all()
|
|
||||||
commands_scope = data["invite_commands_scope"]
|
|
||||||
scopes = ("bot", "applications.commands") if commands_scope else None
|
|
||||||
perms_int = data["invite_perm"]
|
|
||||||
permissions = discord.Permissions(perms_int)
|
|
||||||
return discord.utils.oauth_url(app_info.id, permissions, scopes=scopes)
|
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
async def _can_get_invite_url(ctx):
|
async def _can_get_invite_url(ctx):
|
||||||
@@ -1466,7 +1460,7 @@ class Core(commands.commands._RuleDropper, commands.Cog, CoreLogic):
|
|||||||
- `[p]invite`
|
- `[p]invite`
|
||||||
"""
|
"""
|
||||||
try:
|
try:
|
||||||
await ctx.author.send(await self._invite_url())
|
await ctx.author.send(await self.bot.get_invite_url())
|
||||||
await ctx.tick()
|
await ctx.tick()
|
||||||
except discord.errors.Forbidden:
|
except discord.errors.Forbidden:
|
||||||
await ctx.send(
|
await ctx.send(
|
||||||
|
|||||||
Reference in New Issue
Block a user