
Discord
- 148 ответов
- 0 вопросов
149
Вклад в тег
on_member_join(member)
<@Bot.event
async def on_member_join(member):
if role := member.guild.get_role(418187634689139935):
await member.add_roles(role)
bot.wait_for("reaction_add")
: https://discordpy.readthedocs.io/en/v1.3.4/api.htm...@bot.command(ctx):
async def test(ctx):
accept_decline = await ctx.send('Test')
await accept_decline.add_reaction('one')
try:
reaction = await bot.wait_for("reaction_add", timeout=60, check = lambda r, u: r=='one' )
except asyncio.TimeoutError:
await channel.send("\N{THUMBS DOWN SIGN}")
else:
await channel.send("\N{THUMBS UP SIGN}")
guild
не определена. В данном случае Вы, скорее всего, хотите получить её из контекста - ctx.guildGuild.voice_channels
и Guild.text_channels
- "списки" (list) с каналами соответствующего типа. Списки не имеют атрибута set_permissions
. Данный атрибут есть у каналов в списке. Для установки прав для каждого канала нужно данный список итерировать. @client.command()
async def set_permissions(сtx, role: discord.Role):
for textchannel in ctx.guild.text_channels:
await alltext.set_permissions(
role,
read_messages=True,
send_messages=True,
manage_channels=True,
manage_roles=True,
)
for voicechannel in ctx.guild.voice_channels:
await allvoice.set_permissions(
role, connect=True, manage_channels=True, manage_roles=True
)
await ctx.send(
f"{ctx.author.mention}, вы успешно установили {role.mention} права доступа во всех текстовых/голосовых каналах"
)
Help on function fetch_member in module discord.guild:
async fetch_member(self, member_id)
class Horse: # тип - лошадь
...
def send_to_space(self, encapsulate: bool):
# Функция позволяющая отправить лошадь в космос
self.move(Place("Space"))
special_horse_in_vacuum = Horse(...) # Один определенный сферический конь
special_horse_in_vacuum.send_to_space(True) # Отправляем определенного коня в вакуум
special_horse_in_vacuum = Horse # Определение лошади
special_horse_in_vacuum.send_to_space(True) # Пытаемся отправить определение "лошадь" в космос
# Получаем TypeError: send_to_space() missing 1 required positional argument: 'encapsulate'
@bot.command()
async def test(ctx, member_id: int):
print(await ctx.guild.fetch_member(member_id)) # Получить пользователя через API
print(ctx.guild.get_member(member_id)) # Получить пользователя из кэша бота
@bot.command()
async def info(ctx, *, member: discord.Member):
await ctx.send(f"Вас называют: {member.display_name}. Ваш ID: {member.id}. etc...")
arg
у вас не имеет стандартного значения. Аргументы без стандартного значения считаются обязательными аргументами.@bot.command() # pass_context НЕ существует в текущей версии discord.py: https://discordpy.readthedocs.io/en/v1.4.1/migrating.html#context-changes
async def help(ctx, arg = None):
emb = discord.Embed(title = 'Помощь', colour = 0x2e2d2d)
if arg == 'poll':
emb.add_field(name = f"{ctx.prefix}poll", value = f"Использовать:\nder poll (название голосования), (первый параметр), (второй параметр), (и так до 9 раз)\nПример создания голосования:\npoll test, 1, 2")
await ctx.send(embed = emb)
else:
emb.add_field(name = f"{ctx.prefix}poll", value = f"Создание голосовния.")
await ctx.send(embed = emb)
from typing import Optional
@commands.command()
async def cmd(ctx, arg: Optional[str]): ...