• Почему выдает ошибку Shard ID None has connected to Gateway?

    Vindicar
    @Vindicar
    RTFM!
    1. Это не ошибка, это уведомление. Не видишь метку INFO?
    2. Почему ты реализуешь команды через on_message()? Класс Client вообще не очень хоршо подходит для ботов, используй класс Bot (наследник Client, умеет всё что и Client плюс еще кучу полезностей).
    3. Ты указываешь в качестве интентов Intents.default(), а команды, похоже, рассчитаны на работу на сервере. Для получение текста сообщения из сервера нужно запросить интент message_content, иначе content будет приходить только для тех сообщений, где упоминается бот, или которые посланы боту в личку.

    Короче, найди туториал получше, например, вот этот.
    Ответ написан
    Комментировать
  • Как увеличить FPS в системе?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Как увеличить FPS в системе?

    Ты уже задавал этот вопрос в комментариях к предыдущему вопросу, там есть ответ:

    Основной способ стандартный -- не перерисовывать всё, если можно этого избежать.

    Нет нужды перерисовывать весь интерфейс в бэк-буфере, если ничего не изменилось кроме положения мыши. Указатель мыши вообще можно рисовать прямо во фрейм-буфере, когда он перемещается копировать маленький квадратик из бэк-буфера и рисовать стрелку в новом месте.
    Ответ написан
  • Python telegraph асинхронный upload изображений, как сделать?

    drygdryg
    @drygdryg
    Python-разработчик
    Используйте aiohttp либо httpx в качестве HTTP-клиента вместо Requests, т.к. последний не поддерживает asyncio.
    Ответ написан
    Комментировать
  • Я записываю в файл Python переменную n, а как мне теперь это файл отправить боту в Telegram?

    AlexNest
    @AlexNest
    Работаю с Python/Django
    как мне теперь это файл отправить боту в Telegram

    1.Открыть клиент телеграмма.
    2.Открыть диалог с ботом
    3.Прикрепить файл
    4.Нажать кнопку отправить.
    Ответ написан
    Комментировать
  • Может ли api-сервер отправить 200 браузеру, и при этом продолжить выполнять вызванный браузером запрос?

    paran0id
    @paran0id
    Умный, но ленивый
    В таких случаях положено возвращать 202, и выполнять задачу асинхронно на сервере. Можно вернуть клиенту id задачи и предоставить api для проверки статуса задач по id.
    Ответ написан
    Комментировать
  • Можно ли обработать фото в дискорд боте на python?

    phaggi
    @phaggi
    лужу, паяю, ЭВМы починяю
    Нельзя
    Ответ написан
    Комментировать
  • Какие решения существуют для поиска кадров в небольшую команду?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Подъëм зарплаты всегда работает.
    Ответ написан
    Комментировать
  • Как сверстать такой лоадер?

    LenovoId
    @LenovoId Куратор тега SVG
    svg, css,js
    2 комментария
  • PyCharm, нажимаю запустить выходит ошибка, че он хочет?

    Hivemaster
    @Hivemaster
    Админ, который хочет программировать
    Прошу помочь, я с этим уже два часа вожусь

    Всего два часа. Вы бы ещё через две минуты за помощью прибежали.

    Terminated by other getupdates request; make sure that only one bot instance is running

    Впрочем, двух часов более, чем достаточно, чтобы прочитать текст ошибки.

    P.S. Надо было не только курсив и болд использовать, но и капсом написать текст вопроса.
    Ответ написан
    5 комментариев
  • Как правильно создать глобальный контейнер?

    @GofMan33333
    Вы можете создать класс, который будет хранить состояние ресурсов и предоставлять к нему доступ через свойства или методы. Вам может потребоваться реализовать синглтон-паттерн, чтобы обеспечить, что экземпляр этого класса существует только в одном экземпляре на всем протяжении существования приложения. Также вам может потребоваться защитить состояние ресурсов от неправильного использования, реализовав некоторые методы для доступа к ресурсам.

    В качестве примера:

    from threading import Lock
    
    class ResourceContainer:
        _instance = None
        _lock = Lock()
    
        def __new__(cls):
            with cls._lock:
                if cls._instance is None:
                    cls._instance = super().__new__(cls)
            return cls._instance
    
        def __init__(self):
            self._db_connection = None
            self._message_broker_connection = None
            self._config = {}
    
        def get_db_connection(self):
            return self._db_connection
    
        def set_db_connection(self, connection):
            self._db_connection = connection
    
        def get_message_broker_connection(self):
            return self._message_broker_connection
    
        def set_message_broker_connection(self, connection):
            self._message_broker_connection = connection
    
        def get_config(self):
            return self._config
    
        def set_config(self, config):
            self._config = config


    В этом примере создается класс ResourceContainer, который реализует синглтон-паттерн с помощью метода __new__ и мьютекса _lock. Он хранит состояние ресурсов (подключение к БД, подключение к брокеру сообщений, конфигурация) и предоставляет к ним доступ через методы get_* и set_*.

    Другие модули или функции могут получить доступ к экземпляру ResourceContainer так:

    def foo():
        container = ResourceContainer()
        db_conn = container.get_db_connection()
        # use db_conn
    
    def bar():
        container = ResourceContainer()
        config = container.get_config()
        # use config


    Обратите внимание, что каждый раз при вызове ResourceContainer() будет возвращаться один и тот же экземпляр, таким образом состояние ресурсов будет сохраняться на всем протяжении существования приложения.
    Ответ написан
    Комментировать
  • Почему тг бот обрезает сообщение?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Ответ, который уже помечен галочкой, конечно же поможет решить данную конкретную проблему, но его яркий недостаток в том, что автор вопроса так и не поймёт, в чём же именно проблема состояла. А это очень важно понимать, так как с такой же проблемой можно столкнуться и в других ситуациях.

    Проблема заключается в том, что & является разделителем аргументов GET-запроса. На первом же & в тексте будет считаться, что значение параметра text закончилось, а дальше идёт следующий параметр.

    Чтобы этого не происходило, надо заменять & на %26. Пробел надо менять на +, + менять на %2B, и это далеко не всё, с чем можно столкнуться. В частности, символ # в некоторых применениях является ссылкой на якорь на странице, и http-клиент (например, браузер) не будет передавать в запросе ничего, начиная с этого символа, если его не заменить на %23.

    Чтобы это решить в данном случае, наиболее удобный способ - это передать параметры отдельным аргументом params метода requests.get, чтобы библиотека requests сама грамотно разрулила все необходимые замены. Но если это недоступно для решения какой-то другой задачи - искать как выполнить соответствующее преобразование надо по ключевым словам urlencode/urldecode.
    Ответ написан
    Комментировать
  • Как сгладить график?

    @kisaa
    Ответ написан
    Комментировать
  • Не могу авторизоваться через selenium?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    Не могу авторизоваться через selenium?

    Нет, не можете.
    Ответ написан
    2 комментария
  • Ошибка в боте пайтон как исправить?

    Vindicar
    @Vindicar
    RTFM!
    У тебя библиотека использует f-строки. Они были добавлены с Python 3.6, а ты используешь лежалый 3.5.
    Если так нужна 32-разрядная версия, поставь хотя бы 3.7. А лучше перейди на x64 и ставь что-то поновее.
    Ну и да, научись выделять текст в терминале, или хотя бы пользоваться клавишей Print Screen.
    Ответ написан
    Комментировать
  • Ошибка при попытке забанить человека в беседе Telegram бота — Python (aiogram)?

    Lord_of_Rings
    @Lord_of_Rings
    Python developer
    Ошибка при попытке забанить человека в беседе Telegram бота — Python (aiogram)?

    Да, ошибка
    Ответ написан
    1 комментарий
  • Не запускается бот на python (aiogram), что делать?

    rosh1k
    @rosh1k
    python - не более
    import time
    import logging
    
    from aiogram import Bot, Dispatcher, executor, types
    
    
    TOKEN = ""
    
    bot = Bot(token=TOKEN)
    dp = Dispatcher(bot=bot)
    text_for_user = "Напоминаю - 123, {})"
    
    @dp.message_handler(commands = ["start"])
    async def start_handler(message: types.message):
      user_name = message.from_user.first_name
      user_id = message.from_user.id
      user_full_name - message.from_user.full_name
      logging.info(f'{user_id=} {user_full_name=} {time.asctime()}')
    
    
      await message.reply(f"123, {user_full_name}")
    
      for i in range(10):
        time.sleep(2)
    
        await bot.send_message(user_id, text_for_user.format(user_name))
    
    
    if __name__ == '__main__':
      executor.start_polling(dp, skip_updates = True)

    - вот так
    Ответ написан
    2 комментария
  • Как при работе с MongoDB стандартизировать коллекции?

    ipatiev
    @ipatiev
    Потомок старинного рода Ипатьевых-Колотитьевых
    Да, принято. Без этого, фактически, с Монгой вообще работать невозможно.
    Больше того, учитывая, что (в отличие от нормальных баз данных) имена ячеек всегда хранятся вместе с данными (то есть дублируются столько раз, сколько документов хранится базе), то у монгеров принято давать ключам имена из одной-двух букв для экономии памяти. И эти сокращения тоже надо потом транслировать в человеческие имена. То есть база данных для работы с базой данных становится не прихотью, а жизненной необходимостью.

    Поэтому работа с монгой немного напоминает шизофрению (и это помимо принципиальных факапов этой модной стильной молодежной системы для хранения жизни, вселенной и всего такого)

    в качестве базы данных решено было использовать монгу.

    Флаг в руки и барабан на шею. Безумству храбрых поем мы песню.
    Ответ написан
    Комментировать
  • Как записать 4 одномерных массива в один 1 двумерный массив?

    HemulGM
    @HemulGM Куратор тега Python
    Delphi Developer, сис. админ
    Четыре одномерных массива
    [1,2,3,4,5]
    [1,2,3,4,5]
    [1,2,3,4,5]
    [1,2,3,4,5]
    Один двумерный
    [[1,2,3,4,5],
    [1,2,3,4,5],
    [1,2,3,4,5],
    [1,2,3,4,5]]
    Ответ написан
    Комментировать
  • Как переслать уведомление windows/chrome в телеграм?

    @zkrvndm
    Софт для автоматизации
    Нужно в консоли открыть контекст расширения и отредактировать метод отсылающий уведомления.

    Потребуется знание JavaScript. Пример функции для отправки уведомлений из браузера в Телеграм:
    async function sendTelegram(send_text) {
    	
    	var chat_id = '-*****************'; // Номер группы Телеграм
    	
    	// Токен, бот должен состоять в группе, куда шлем уведомления:
    	var bot_token = '*******************************************';
    	
    	var url_obj = new URL('https://api.telegram.org/bot'+bot_token+'/sendMessage');
    	url_obj.searchParams.set('time', new Date().getTime());
    	
    	var max_send_count = 3; var send_status = false;
    	
    	do {
    		
    		max_send_count--;
    		
    		try {
    			
    			var response = await (await fetch(url_obj.href, {
    				'method': 'POST',
    				'headers': {
    					'Content-Type': 'application/json; charset=UTF-8'
    				},
    				'body': JSON.stringify({
    					'chat_id': chat_id,
    					'text': send_text,
    					'parse_mode': 'HTML'
    				})
    			})).json();
    			
    			if (response.ok) {
    				
    				send_status = true;
    				
    				console.log('Уведомление успешно отправлено в группу Телеграм:');
    				console.dir(response);
    				
    			}
    			
    			else {
    				
    				console.log('Произошла ошибка при отправке уведомления в группу Телеграм:');
    				console.dir(response);
    				
    				await new Promise(function(s) { setTimeout(s, 1000); });
    				
    			}
    			
    		}
    		
    		catch (err) {
    			
    			console.log('Произошла ошибка при отправке уведомления в группу Телеграм:');
    			console.error(err);
    			
    			await new Promise(function(s) { setTimeout(s, 1000); });
    			
    		}
    		
    	} while (!send_status && max_send_count > 0);
    	
    	if (!send_status) {
    		
    		alert('Не удалось отправить уведомление в Телеграм, детали см. в консоли.');
    		
    	}
    	
    	return send_status;
    	
    }
    Ответ написан
    1 комментарий
  • Почему возникает ошибка "IndentationError: expected an indented block after function definition"?

    Hivemaster
    @Hivemaster
    Админ, который хочет программировать
    может я тупой конечно

    1. С формулированием краткого, но конкретного заголовка вопроса в форме вопросительного предложения не справился.
    2. С редактором текста вопроса не справился.
    3. С поиском по очень распространённой ошибке не справился.

    6344227607336818699807.jpeg
    Ответ написан
    Комментировать