nikto_211, в документации по sqlite3 есть в самом начале примеры INSERT и SELECT, в том числе как получить результат запроса SELECT. А также предупреждение, как лучше вставлять значения из переменных в запрос. Всё это в первом разделе, до заголовка "Module functions and constants".
Что именно в этих примерах непонятно?
javedimka, ну в частных случаях, типа UI+worker, можно вытащить worker в отдельный поток малой кровью - в зависимости от сцепления между двумя подсистемами. Грубо говоря, если worker только читает исходные данные и только пишет в результат, то UI достаточно записать исходные данные до старта воркера и прочитать результат после его окончания. Если они сцеплены сильнее, например, есть индикация прогресса - то да, будет "веселее".
А вот с асинхронным кодом такое не прокатит, там всегда нужно рефакторить код в полностью асинхронный.
Всё выше - моё имхо, конечно же.
aquario-cloud, никак. Ты можешь использовать семафор, чтобы выполнялось не более N запросов одновременно. Может выполняться менее N, в зависимости от кучи обстоятельств.
Rotyin, задача CPU-bound, т.е. с упором на расчёты а не на ввод-вывод. Асинхронность как таковая тут не поможет, можно только вытащить часть кода в другой процесс с помощью asyncio.loop.run_in_executor() - это позволит выполнить длительную задачу, не останавливая цикл реактора асинхронной программы.
Иван Мельников, ну если специально делать всё, чтобы имитировать свойства одного типа связей средствами другого, то внезапно эти типы будут неразличимы. Это должно удивлять? =)
Если вопрос был "существует ли четкая граница между двумя типами связей", то ответ "нет, не существует". Но это не значит, что нельзя различать ситуации, в которых применяется один или другой тип.
sovsemnevajno, а в чем именно затруднение? Понятие глобальной переменной - это одно из базовых для программирования как такового, не то что питона. Если не знаком с основами, зачем берешься за нетривиальные вещи типа ботов?
Единственный пример, который можно тут дать, это написать готовый код, а это тупик.
sovsemnevajno, Как насчёт создать подключение при создании бота, сохранить его в глобальной переменной, и использовать эту переменную в обработчиках?
with полезен только если вам нужно гарантированно закрыть подключение, а так как оно у нас живет всё время жизни бота, это не актуально.
Курсор можно и пресоздавать, это не так долго.
kopatych3756, вы ссылку прочитали?
В питоне проверка на вхождение в массив звучит как
message.content in ['ghbdtn', 'ghbdtn!', 'ghbdtn)']
В JS эквивалент будет
['ghbdtn', 'ghbdtn!', 'ghbdtn)'].includes(message.content)
javedimka, и каким же боком вызов filter() читается хуже, чем вложенное list comprehension, да еще и с неявным преобразованием bool -> int в придачу?
Я бы еще понял предложение типа такого
l2 = [item for item in l1 if suffix[item[-N:]] <= 1 ]
Да и наличие слова filter() уже явно говорит, что происходит, тогда как list comprehension еще распарсить надо.
Ну ты спросил. Что за команда наушники?
Ты хочешь, чтобы участник ничего не слышал, или чтобы участника не было слышно?
Так или иначе, server_voice_state() в помощь.