@bot.listen()
async def on_ready():
await bot.tree.sync()
await bot.change_presence(activity=discord.Activity(type=discord.ActivityType.competing))
Shard ID None is requesting privileged intents that have not been explicitly enabled in the developer portal. It is recommended to go to https://discord.com/developers/applications/ and explicitly enable the privileged intents within your application's page. If this is not possible, then consider disabling the privileged intents instead.
"Осколок" с ID None запрашивает привилегированные намерения (intents), которые не были включены на портале разработчика. Рекомендуется пройти на https://discord.com/developers/applications/ и включить привилегированные намерения на странице вашего приложения. Если это невозможно, вместо этого подумайте над отключением привилегированных намерений.
guild.unban
в качестве user
принимает любой объект основанный на абстрактном классе abc.Snowflake
abc.Snowflake
в свою очередь является классом с одним единственным атрибутом - ID
Object
, таким образом:member = discord.Object(row["user_id"]) # row["user_id"] должен быть типа int
await guild.unban(member)
async def setprefix(self, ctx, *, prefixes=""): # prefixes
custom_prefixes[ctx.guild.id] = default_prefixes # default_prefixes
# default_prefixes != prefixes
await ctx.send("Prefixes set!")
The setup and teardown functions in extensions must now be coroutines.
ext.commands.Bot.load_extension()
must now be awaited.ext.commands.Bot.unload_extension()
must now be awaited.ext.commands.Bot.reload_extension()
must now be awaited.ext.commands.Bot.add_cog()
must now be awaited.ext.commands.Bot.remove_cog()
must now be awaited.
bot.load_extension(name)
→ await bot.load_extension(name)
Участник добавивший реакцию. Доступно только если event_type является REACTION_ADD, и реакция добавлена в контексте сервера
reports.json
, либо сменить режим открытия файла.r
Стандартный режим -'r'
(открыть для чтения текста, синоним'rt'
). Режимы'w+'
и'w+b'
открывают и очищают файл. Режимы'r+'
и'r+b'
открывают файл без очистки.
ALLOWED_CHANNEL = 2338229588067772743
def allowed_channel_check():
def predicate(ctx):
return ctx.channel.id == ALLOWED_CHANNEL
return commands.check(predicate)
@client.command()
@allowed_channel_check()
async def reg (ctx, *, nick):
[guild for guild in bot.guilds if guild.member_count > 1000]
# OR
[guild for guild in bot.guilds if len(guild.members) > 1000]
list(filter(lambda g: g.member_count>1000, bot.guilds))
# OR
list(filter(lambda g: len(g.members)>1000, bot.guilds))
Декоратор, добавляющий проверку для Command (команды) или его подклассов. Эти проверки могут быть получены через Command.checks.
Эти проверки должны быть предикатами, которые принимают единственный аргумент - Context. Если проверка возвращает значение похожее на False, то при выполнении команды поднимается исключение CheckFailure и отправляется в событие on_command_error().
@has_channel()
def is_me():
def predicate(ctx):
return ctx.message.author.id == 85309593344815104
return commands.check(predicate)
@bot.command()
@is_me()
async def only_me(ctx):
await ctx.send('Only you!')
@client.event
async def on_message(message):
if message.channel.id != 889788953216032780:
return
...
@bot.check
def check_commands(ctx):
return message.channel.id == 889788953216032780
@bot.command(aliase = ["embed"])
(и да, аргумент все же называется aliases)# discord_slash имеет свои методы создания компонентов. Они не обязательно совместимы с discord_components.
from discord_slash.utils.manage_components import create_button, create_actionrow
...
async def send_embed(ctx, button_type):
channel = bot.get_channel(cfg.Config[0])
if button_type == "slash":
components = create_row(create_button(label="Оформить текст"))
elif button_type == "message":
components = [Button(custom_id="Order", label="Оформить текст")]
else:
raise Exception("Кто-то забыл указать тип кнопки")
await channel.send(
embed=discord.Embed(
title="VAYO",
description="""Тестовый текст""",
colour=0x1ABC9C,
timestamp=ctx.created_at,
),
components=components,
)
@slash.slash(
name="embed", description="Обновить кол-во полученных заказов.", options=[]
)
async def slash_embed(ctx):
return await send_embed(ctx, button_type="slash")
@bot.command(
name="embed"
) # aliases используется для *дополнительных* имён команд. для названия самой команды - используйте аргумент "name"
async def message_embed(ctx):
"""Обновить кол-во полученных заказов.""" # показывается в [p]help
return await send_embed(ctx, button_type="message")
BLACKLISTED_GUILDS = [803958338191541161, ...]
...
@bot.check
def check_commands(ctx):
return ctx.guild.id not in BLACKLISTED_GUILDS
async def cmd(ctx, arg: int):
async def cmd(ctx, arg: discord.Color):