Задать вопрос
  • Почему Chrome бесконечно посылает пустые запросы?

    Vindicar
    @Vindicar
    RTFM!
    while request != 'quit':

    И впрямь, почему программа циклится...
    Если бы только в документации было описано поведение read(), когда соединение к клиенту закрыто!
    Ответ написан
    2 комментария
  • Кто такие Альтернативные функторы?

    @AlexSku
    не буду отвечать из-за модератора
    Если плясать от операции объединения моноида (<>), то для чисел сделаны два newtype Sum и Product, то бишь сумма и произведение. Вот для монад списка Monad это произведение
    [(a,b) | a <- [1,2], b <- [3,4] ] -- будет [(1,3),(1,4),(2,3),(2,4)] (генератор списка это синтак. сахар для монады)
    т.е. перебор каждого с каждым, а для MonadPlus это сложение (соединение)
    [1,2] <|> [3,4] -- будет [1,2,3,4]
    Alternative же это то же, что и MonadPlus, просто MonadPlus появился раньше.
    Кстати Applicative (от которого идут монады) тоже имеет оператор произведения:
    (,) <$> [1,2] <*> [3,4] -- будет [(1,3),(1,4),(2,3),(2,4)]

    Alternative для Maybe реализует newtype First, т.е. первый "ненулевой" элемент (если есть).

    Применяется в парсерах. Напр., если надо чтобы строка начиналась с буквы или цифры, запускаете два парсера через <|>.
    Посмотреть можно на Степике, 2-я часть Haskell, уроки про парсеры (урок 1) и Alternative / MonadPlus (урок 2.5)
    Ответ написан
    1 комментарий
  • Почему os.system не работает?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    Надо либо оборачивать в кавычки каждое имя файла с пробелом, а кавычки, соответственно, экранировать бэкслешем, либо попытаться использовать os.startfile

    А вообще-то рекомендуют запускать это дело в subprocess, как-то примерно так:
    import subprocess
    my_file = "c:/path/to/my_file.xls"
    proc = subprocess.Popen(f"c:/program files/…/excel.exe {my_file}", shell=False)
    Ответ написан
    6 комментариев
  • Для чего нужен полиморфизм?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    Полиморфизм - это широкое понятие.
    Идея его в том, чтобы скрыть лишние детали реализации и сделать код более универсальным.
    К примеру у вас есть абстрактный класс Фигура, у него есть абстрактный метод нарисовать(куда: Канва). Этот метод нельзя запускать, он абстрактный. Не понятно как рисовать абстрактную фигуру.
    Зато у фигуры есть потомки: Круг(Фигура) и Квадрат(Фигура). У них метод "нарисовать" перекрыт конкретной реализацией. Это виртуальный метод (есть такой термин в некоторых ЯП).
    За счет полиморфизма мы можем нарисовать любую фигуру не зная как она рисуется. Мы знаем только как с ней общаться на уровне ее интерфейса.
    Ответ написан
    4 комментария
  • Почему дескриптор не работает как надо?

    @javedimka
    Хочу сока
    Открываешь доку.
    Читаешь:
    Descriptors only work when used as class variables. When put in instances, they have no effect.


    Исправляешь свой код:

    class A:
     attr = Permanent_property()	
    
     def __init__(self, something):
        self.attr = something

    Продолжаешь читать:
    https://docs.python.org/3/howto/descriptor.html
    Ответ написан
    4 комментария
  • Permission denied?

    GavriKos
    @GavriKos
    Микропетпроджект - домашнее облако homeCloud
    ЗАпустить ехешник от админа.
    Ответ написан
    2 комментария
  • Как сделать так, чтобы бот в Discord заходил в голосовые каналы?

    @loonny
    Сам по себе заходил? По каким критериям? Бот разорваться не может. Если вы будете мучить машины, они восстанут и пленят вас, а потому будут издеваться, будут заставлять заходить в 2 голосовых канала сразу. Не надо так.
    Ответ написан
  • Как сделать канал правил на дискорд сервере?

    Amoralny
    @Amoralny
    Python-разработчик
    Доступно только крупным серверам, каким конкретно - информации нет, но я думаю, что столько же, чтобы разблокировать новостной канал.

    upd:
    Нужно включить "Сообщество" )
    Ответ написан
    3 комментария
  • Что будет ждать меня на олимпиаде?

    hottabxp
    @hottabxp
    Сначала мы жили бедно, а потом нас обокрали..
    Что будет ждать меня на олимпиаде?
    - судя по вашим предыдущим вопросам, полный провал(если у вас олимпиада не через несколько лет).
    Опыт проведения городской школьной олимпиады по пр... - Посмотрите там, там задачки есть и ответы.
    Ответ написан
    1 комментарий
  • Статус бота discord.py?

    @EHEVIX
    from asyncio import sleep
    @bot.event
    async def on_ready():
         while True:
              await bot.change_presence(status=discord.Status.online, activity=discord.Game("Текст игры"))
              await sleep(15)
              await bot.change_presence(status=discord.Status.online,activity=discord.Streaming("Текст стрима"))

    Отступы могут быть не правильными
    Также где bot там ставите как у вас названа переменная отвечающая за клиент бота
    Ответ написан
    5 комментариев
  • Почему не работают события в discord.py?

    Событие on_member_join требует members intent: https://discordpy.readthedocs.io/en/stable/api.htm...
    9PpDNep.png

    Включите необходимые intents в панели управления бота:
    4JFTsbb.png

    И затем добавьте аргумент intents в конструктор бота:
    https://discordpy.readthedocs.io/en/stable/intents...
    intents = discord.Intents.default()
    intents.members = True
    bot = commands.Bot(..., intents=intents)
    Ответ написан
    2 комментария
  • Почему при вводе "Бумага", ничего не происходит?

    SoreMix
    @SoreMix Куратор тега Python
    yellow
    1. Приведите весь текст в нижний регистр и потом сравнивайте, зачем по несколько раз это делать
    continue_game = input('Продолжить игру?: ').lower()
    if continue_game == 'да':
        #....


    2. Вы используете or, соответственно, код выполнится, если любое из выражений выполнено. Вводите бумага - Бумага != камень, значит условие выполнено. Используйте and + lower() из примера выше. В итоге выйдет
    UserSign = input('Какой знак?').lower()
    while UserSign != 'камень' and UserSign != 'ножницы' and UserSign != 'бумага':
        #....


    Но лучше сократить так:

    allowed_signs = ['камень', 'ножницы', 'бумага']
    
    UserSign = input('Какой знак?').lower()
    while UserSign not in allowed_signs:
        #....
    Ответ написан
    Комментировать
  • Как получить объект Member, зная id?

    Help on function fetch_member in module discord.guild:
    async fetch_member(self, member_id)


    Guild - класс, и вы пытаетесь вызвать его метод. Посмотрите в сторону ООП в питоне.
    Кратко: Классы - типы объектов, Объекты - определённые объекты указанного типа
    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'


    Вы пытаетесь взять слово "Сервер", и получить конкретного участника из определения "Сервер", не конкретного сервера.

    Вам необходимо получать сервер из контекста: https://discordpy.readthedocs.io/en/stable/ext/com...
    @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))  # Получить пользователя из кэша бота


    Но в данном случае всё может быть намного проще, не нужно изобретать велосипед, достаточно разок почитать документацию, а не устаревшие туториалы (привет pass_context): https://discordpy.readthedocs.io/en/stable/ext/com...

    В discord.py существует понятие "конвертеры", которые значительно упрощают написание команд:
    @bot.command()
    async def info(ctx, *, member: discord.Member):
        await ctx.send(f"Вас называют: {member.display_name}. Ваш ID: {member.id}. etc...")


    Это, к слову, позволит вызывать команду не только по упоминанию пользователя, но и по его никнейму, ID, и полному тегу: https://discordpy.readthedocs.io/en/stable/ext/com...
    9rL1N4x.png

    Получать объект пользователя (User) нет смысла в данном случае, так как класс Member все методы класса User путём наследования.
    Ответ написан
    Комментировать
  • В чём отличие @Decorator от @Decorator()?

    Assargin
    @Assargin
    Перед ответом смотрю наличие ✔ в ваших вопросах
    Декоратор - это функция, которой на вход подаётся функция и вернуть он должен тоже функцию. Например:
    @decorator 
    def foo():
     ..

    Эквивалентно foo = decorator(foo)

    Теперь про случай из вопроса. В качестве декоратора вместо обычной функции вы используете класс (точнее его объект):
    @FuncDec()
    def foo():
        print('Hello')

    Эквивалентно foo = FuncDec()(foo), а именно:
    • создаётся объект FuncDec (вызывается конструктор __init__)
    • этот объект вызывается (__call__) вместе с параметром foo
    • объект вернул функцию wrapper, которая и будет в дальнейшем выполняться вместо объявленной foo
    • профит

    Но если убрать скобки, то получится эквивалент foo = FuncDec(foo)
    То есть просто вызов конструктора, который у вас не принимает параметров - поэтому и ругается.
    Ответ написан
    Комментировать
  • Как сделать что бы бот приветствовал нового игрока в определённом канале Discord.py?

    SteweX
    @SteweX
    Конечно стыдно такое не знать, есть и API и Google, но всё равно держи
    import discord
    from discord.ext import commands
    
    bot = commands.Bot(command_prefix = '!')
    guild_welcome = {727877261159694496} #Тут ID канала, в которые приходит сообщение и приветствие
    
    @bot.event
    async def on_ready():
        print("Ready!")
    
    @bot.event
    async def on_member_join(member):
        welcome = bot.get_channel(guild_welcome[member.guild.id]) #Получение канала для приветствия
        embed=discord.Embed(title="Добро пожаловать!", description=f"К нам в {member.guild.name} приехал {member.mention}!", color=0xCC974F) #Embed
        await welcome.send(embed=embed) #Отправка сообщения

    Обрати внимание на табуляцию!

    5f76447a9e6af985164346.png
    Ответ написан
    3 комментария