@bot.command(pass_context=True)
@commands.has_role("Admin")
async def check(ctx, user: discord.Member):
role = discord.utils.find(lambda r: r.name == 'название_роли', ctx.message.server.roles)
if role in user.roles:
await bot.say("у вас есть роль")
else:
await bot.say("у вас нету роли")
git fsck --lost-found --full
after.channel
становится None когда Вы выходите из канала.if voice_channel is not None and channel_category is not None:
if after.channel.id == voice_channel:
if voice_channel and channel_category and after.channel.id == voice_channel:
else:
pass
Python 3.8.1 (tags/v3.8.1:1b293b6, Dec 18 2019, 22:39:24) [MSC v.1916 32 bit (Intel)]
Type 'copyright', 'credits' or 'license' for more information
IPython 7.17.0 -- An enhanced Interactive Python. Type '?' for help.
In [1]: def test():
...: for i in range(0, 100):
...: if i%2:
...: 2+2
...: else:
...: pass
...:
In [2]: %timeit test()
14.4 µs ± 559 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)
In [3]: def test():
...: for i in range(0, 100):
...: if i%2:
...: 2+2
...:
In [4]: %timeit test()
13.6 µs ± 435 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)
voice_channel_update
в discord.py по умолчанию не существует, и если Вы не вызываете это событие сами, то Вы будете ждать его бесконечно import urllib
f = urllib.request.urlopen('https://your.site')
html = f.read(100).decode('utf-8')
from bs4 import BeautifulSoup
soup = BeautifulSoup(html) # HTML, взятый по ссылке
img = soup.find('div.w3-container img.w3-image') # Вам придется продумать выборку
src = img.attrs.get('src')
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} права доступа во всех текстовых/голосовых каналах"
)
@client.command()
async def role(ctx):
await ctx.send(f"{ctx.author.mention}, `запрос на роль был успешно отправлен, ожидайте рассмотрение запроса модерацией.`")
chatmoder = client.get_channel( 729733881129074768 )
confirm_msg = await chatmoder.send(f"{ctx.author.mention} запрашивает роль")
await confirm_msg.add_reaction("")
await confirm_msg.add_reaction("")
role = ctx.guild.get_role(703596629860548643)
try:
reaction, user = await client.wait_for('reaction_add', timeout=1800.0)
except asyncio.TimeoutError:
await ctx.send("Время ожидание прошло. Попросите руководителя семьи еще раз приглосить Вас в семью")
else:
if str(reaction) == "":
await ctx.author.add_roles(role)
await ctx.send("Роль выдана.")
else:
await ctx.send("Роль не выдана.")
def check_if_it_is_me(ctx):
return ctx.message.author.id == 85309593344815104 #id человека
@bot.command()
@commands.check(check_if_it_is_me) #проверка от того ли человека пришла команда
async def only_for_me(ctx):
#делаете что-то
@bot.command()
@commands.has_any_role('Moder','admin', 492212595072434186)
async def command(ctx):
#и делаете что-то
embed_obj = discord.Embed(description = "текст")
# или
embed_obj = discord.Embed()
embed_obj.description = "текст"
@client.event
async def on_member_join(member):
channel = member.guild.system_channel
if channel is not None:
await channel.send('Приветствую, {0.mention}.'.format(member))
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.get_channel
в качестве аргумента принимает ID в типе int. По умолчанию все аргументы передаваемые в команду парсером, передаются туда как str, если не указан иной тип. В вашем случае эта функция никогда не вернёт канал.@bot.command()
async def news(ctx, channel: discord.TextChannel, *, text): # используем kwargs для отсутствия необходимости написания ковычек: https://discordpy.readthedocs.io/en/stable/ext/commands/commands.html#keyword-only-arguments
emb= discord.Embed(title='Новость!!!',description=f'{text}', timestamp=ctx.message.created_at)
await channel.send(embed=emb)