• Как fill принимает массив умноженный на long long?

    gbg
    @gbg Куратор тега C++
    Любые ответы на любые вопросы
    fill принимает два указателя - указатель на начало, указатель на элемент, расположенный за последним; а также собственно значение, которым заполнять.

    В данном случае, a+n трактуется как указатель на элемент массива с идексом n, то есть, &a[n].
    Ответ написан
    Комментировать
  • Как fill принимает массив умноженный на long long?

    wataru
    @wataru Куратор тега C++
    Разработчик на С++, экс-олимпиадник.
    Арифметика указателей. Это получается указатель на за-последним элементом массива, как ::end() у коллекций.
    Ответ написан
    Комментировать
  • Почему в telebot функция срабатывает дважды?

    @twistfire92
    Python backend developer
    Судя по-всему ситуация такая:

    у вас несколько хендлеров, каждый из которых проверяет наличия юзера в чате.

    @client.message_handler(commands = ['start'], func=check)
    
    @client.message_handler(content_type= ['text'], func=check)


    и т.д.
    Пользователь присылает сообщение. Срабатывает проверка в первом хендлере. Во время этой проверке выясняется, что пользователь не состоит в чате, ему отправляется сообщение и возвращается False.
    Из-за того, что первый хендлер не сработал, срабатывает проверка в следующем. И ситуация повторяется.

    Как вариант, можно сделать следующее:
    Насколько я понимаю, бот не должен ничего делать, если пользователь не состоит в чате.
    Делайте отдельный хендлер с проверкой на то, то пользователь НЕ состоит в чате.

    def check(message):
        if client.get_chat_member(channel_chat_id,  message.chat.id).status in need_status:
            return False
        else:
            return True
    
    @client.message_handler(content_types=['text'], func=check)
    def access_denied(message):
        client.send_message(message.chat.id, subscribe_error_msg)


    И этот хендлер надо поставить выше всех остальных, тогда он будет ловить вообще все сообщения самым первым. Если пользователя нет в нужном чате, он срабатывает, пишет что проверка не пройдена и все, другие хендлеры работать не будут.

    Думаю, суть понятна.
    Ответ написан
    2 комментария
  • Как парсить данные с сайта с регистрацией через bs4?

    SoreMix
    @SoreMix Куратор тега Python
    yellow
    Потому что не авторизовались.
    Эндпоинт для авторизации другой
    Формат данных другой
    Имена параметров другие
    + запрос на авторизацию не вернет данных с другой страницы
    Ответ написан
    2 комментария
  • Почему не работает функция на редактирование канала под онлайн в discord.py?

    https://discordpy.readthedocs.io/en/stable/api.htm...
    1. Функции прослушивания событий должны начинаться с on_
    2. События on_update_online() не существует, вам нужен on_member_update(before, after): https://discordpy.readthedocs.io/en/stable/api.htm...
    3. Использовать sum() в асинхронном контексте - скорее всего, плохая идея
    4. Ratelimit'ы позволяют редактировать название и описание канала только 2 раза в десять минут


    Учитывая вышесказанное:
    from datetime import datetime
    
    ...
    
    last_time = datetime.now()
    
    @client.event
    async def on_member_update(before, after):
        if (datetime.now() - last_time).total_seconds() > 60*5:  # один раз в пять минут
            return
        last_time = datetime.now()
        online = len([m for m in after.guild.members if m.status != discord.Status.offline])
        await bot.get_channel(CHANNEL_ID).edit(name=f"Online: {online}")
    Ответ написан
    3 комментария