Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 21, 2021 18:36:33

Magister6239
Зарегистрирован: 2019-08-13
Сообщения: 29
Репутация: +  0  -
Профиль   Отправить e-mail  

discord.py

Я гуглил не нашел. Плз подскажите, как работают декораторы в этой библиотеке. К примеру:

 @bot.event
async def on_ready():
    print(f'Logged in as {bot.user.name}')
@bot.command()
async def ping(ctx: commands.Context):
    await ctx.send('Pong!')
@bot.command()
async def test(ctx: commands.Context):
    await ctx.send('test')
Но почему это работает? Декоратор оборачивает функцию и возвращает другую функцию, но как имя функции может влиять на работу? Я пытаюсь представить как это работает внутри, но для меня это попросту не должно работать… Вот функция ping, так как ее имя может влиять на ее вызов в самом дискорде? Извините если я неправильно что то сказал или выразился.

Отредактировано Magister6239 (Июнь 21, 2021 18:37:08)

Офлайн

#2 Июнь 22, 2021 01:14:02

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9930
Репутация: +  856  -
Профиль   Отправить e-mail  

discord.py

  
>>> def abcde():
...   return 1
... 
>>> name = abcde.__name__
>>> name
'abcde'
>>>

Не знаю, как работает конкретно этот модуль для создания ботов и конкретно в дискорде, но проблем с тем, чтобы имя функции добавить в реестр имён и сопоставлять его с введённой командой в виде строки, нет.



Отредактировано py.user.next (Июнь 22, 2021 01:16:51)

Офлайн

#3 Июнь 23, 2021 11:21:49

Magister6239
Зарегистрирован: 2019-08-13
Сообщения: 29
Репутация: +  0  -
Профиль   Отправить e-mail  

discord.py

Спасибо. Это оказалось очень просто

Отредактировано Magister6239 (Июнь 23, 2021 11:22:35)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version