• Что делать если InlineKeyboardButton показывает не весь текст aiogram3.0?

    febday
    @febday
    Генерация кнопок, конечно, претерпела изменений, но не до такой степени, чтобы убрать функцию вывода в столбик или строку

    Можно использовать InlineKeyboardBuilder
    from aiogram import types
    from aiogram.utils.keyboard import InlineKeyboardBuilder
    
    builder = InlineKeyboardBuilder()
    # 1 вариант (в строку)
    builder.row(
    	types.InlineKeyboardButton(text, callback_data),
    	types.InlineKeyboardButton(text, callback_data)
    )
    # ---
    # 2 вариант (в строку)
    builder.button(text, callback_data)
    builder.button(text, callback_data)
    # ---
    
    # 1 вариант (в столбец)
    builder.row(
    	types.InlineKeyboardButton(text, callback_data),
    	types.InlineKeyboardButton(text, callback_data),
    	width=1
    )
    # ---
    # 2 вариант (в столбец)
    builder.button(text, callback_data)
    builder.button(text, callback_data)
    builder.adjust(1)
    # ---


    Можно ещё придумать способы выстраивания кнопок, но думаю этого достаточно

    А если нужно через обычный InlineKeyboardButton, то вот:
    kb = [
    	[
    		types.InlineKeyboardButton(text, callback_data),
    		types.InlineKeyboardButton(text, callback_data)
    	],
    	[
    		types.InlineKeyboardButton(text, callback_data)
    	]
    ]
    keyboard = types.InlineKeyboardMarkup(inline_keyboard=kb)

    В этом случае каждый список является отдельной строкой
    Ответ написан
    1 комментарий
  • Как убрать фиксированную вложенность в VS Code?

    Get-Web
    @Get-Web
    Front-End Developer
    В конфиг настроек добавить:
    "editor.stickyScroll.enabled": false

    Либо открываем Файл > Настройки > Параметры (CTRL+,), находим Editor>Sticky Scroll: Enabled, убираем галочку:
    66074370ce502720488745.jpeg
    Ответ написан
    Комментировать
  • Как убрать inline клавиатуру aiogram?

    @SashaN69
    Школота
    Можно просто удалять сообщение
    import asyncio
    from contextlib import suppress
    
    from aiogram import types
    from aiogram.utils.exceptions import (MessageToEditNotFound, MessageCantBeEdited, MessageCantBeDeleted,
                                          MessageToDeleteNotFound)
    
    async def delete_message(message: types.Message, sleep_time: int = 0):
        await asyncio.sleep(sleep_time)
        with suppress(MessageCantBeDeleted, MessageToDeleteNotFound):
            await message.delete()


    msg = await message.reply("Я удалюсь через 30 секунд")
        asyncio.create_task(delete_message(msg, 30)
    Ответ написан
    Комментировать
  • Как убрать inline клавиатуру aiogram?

    @dragonz1
    @dp.callback_query_handler(text="тут название твоей callback_data")
    async def call_main_menu(call: CallbackQuery):
    await bot.delete_message(chat_id=call.from_user.id, message_id=call.message.message_id)
    Ответ написан
    1 комментарий
  • Как убрать inline клавиатуру aiogram?

    @tmutarakan
    Вместо удаления можно отредактировать в сообщении параметр reply_markup
    @dp.callback_query_handler(text="тут название твоей callback_data")
    async def call_main_menu(call: CallbackQuery):
        await bot.edit_message_reply_markup(
            chat_id=callback_query.from_user.id,
            message_id=callback_query.message.message_id, 
            reply_markup=None
        )
    Ответ написан
    Комментировать
  • Inline keyboard error. Как решить?

    @esquired25
    Замена
    @dp.callback_query_handler(func=lambda c: c.data == 'button1')

    На
    @dp.callback_query_handler(lambda c: c.data == 'button1')

    Поможет
    Ответ написан
    Комментировать
  • Навигация по pgAdmin 4, просмотр записей таблиц?

    @mezhuev
    Системный администратор
    Через контекстное меню таблицы:
    4038b3f76392a2db5481262932949bcf.png
    Ответ написан
    5 комментариев
  • Как писать содержимое stdout в переменную, не дожидаясь когда будет выведен символ новой строки?

    @rPman
    Потому что читаешь с помощью .readline() которая по определению ждет символ '\n'
    Хочешь другой символ, используй просто read и сам сканируй буфер на наличие \r и собирай строку

    как вариант, подмени вывод чем-нибудь, используя пайпы, например tr, а чтобы он не буферизировал вывод, добавь stdbuf -o0, обсуждалось тут
    ffmpeg -i input.mov output.webm 2>&1 | stdbuf -o0 tr '\r' '\n'
    Ответ написан
    Комментировать
  • Почему возникает ошибка ImportError: cannot import name 'webdriver'?

    drno-reg
    @drno-reg Автор вопроса
    см не кратко
    проблема заключалась в том, что я назвал свой скрипт selenium.py

    переименование решило проблему

    stackoverflow.com/questions/7426851/trying-to-use-...
    Ответ написан
    Комментировать
  • Почему до сих пор никто не создал p2p мессенджер?

    jamakasi666
    @jamakasi666
    Просто IT'шник.
    Потому что у p2p только один единственный плюс в виде децентрализации и он же является минусом перечеркиващим все остальное. Сам p2p также фигово предназначен для передачи мелких и РАЗНЫХ данных но хорошо для передачи мелкими кусочками болищих неменяющихся данных.

    Т.е. грубо говоря одно дело идет раздача 1гб данных куче пиров которые также становится раздающими и в целом ускоряют раздачу потому что этот гиг хочет 1000 человек. Другое дело у тебя 10 байт текста обвязанных 300 байтами служебки и их надо передать одному единственному или паре пиров, остальным он не нужен, в таком случае сеть грубо говоря превращается в кучу шлюзов ретрансляторов из разряда ПирА(отправляет сообщение пиру Я) -> увидел пирБ(не мое передам дальше и затру у себя)->...-> поймал пирП(не мое передам дальше и затру у себя) ->...->->получил пирЯ(а это мне!). В савокупности для передачи породится космическое число мусора и изначальные байта сообщения по дороге выжрут мегабайты чужого трафика. Кроме того время доставки сообщения может быть очень большим пока сообщение путешевствует от пира к пиру даже потому что иногда придется искать маршрут что говорится в слепую не зная с какой стороны находится адресат.
    Почему на мобилках не интересен и не популярен тот же токс, ну вот ты пользуешься торрентом на телефоне? Аааа трафик жалко стало да? вот и тут схожая ситуация.

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

    Намного более интересные это жаббер\matrix которые могут быть гибридными, проще это представить как почту где ты привязался к сервису например яндекс и можешь отправить сообщение пользователю который привязан к гуглу, каждый сервис имеет свои плюшки а если что то не нравится то всегда можно найти другого провайдера почты. Но к сожалению яббер не нашел массового успеха погрязнув в стандартах изза чего потерял совместимость, а матрица досих пор в каком то непонятном состоянии.
    Ответ написан
    Комментировать
  • Спрашивать ли бюджет у клиента или сразу называть свою цену?

    Заказчику всегда приятнее работать с тем, кто знает себе цену, чем с тем, кто старается выкружить денег по максимуму. Тем более, чем с тем, кто готов работать за еду, потому что большего не заложено в бюджет. Не все заказчики об этом знают, но по результату всегда получается так. Если честный специалист без стремления к торгу не вызывает у заказчика доверия - это повод поискать заказчика повменяемее.

    Ваша работа стоит столько, за сколько вы готовы её сделать. Так что интересоваться надо не бюджетом, а ТЗ, и из него называть цену. Потом, разумеется, надо уточнить бюджет, хотя бы чтобы понять как себя вести при запросе добавок и доделок.
    Ответ написан
    13 комментариев
  • Альтернатива Dropbox с версионностью файлов?

    2ord
    @2ord
    Существует ПО, которое при помощи техники дедупликации данных очень эффективно позволяют хранить коллекции файлов, среди которых есть множество дубликатов, а также если файлы отличаются совсем незначительно, при этом сохраняются лишь сами изменения, порционно.
    Такое ПО имеет много общего с традиционными системами контроля версий, используемыми для хранения исходных кодов программ, только адаптированы для работы с большими объёмами информации, такими как коллекции медиа-файлов.
    Одна из таких известных мне программ - это boar.
    you might think of boar as "version control for large binary files"

    Она имеет интерфейс для командной строки, хотя есть и дополнительные программы для неё с графическим интерфейсом: boar-gui, boarG.
    Есть и другое подобное ПО, такое как bup, git-annex.

    Такие программы обычно хранят специальный (относительно компактный) архив отдельно от самой коллекции файлов. Именно такой репозиторий и стоит синхронизировать в "облачный" хостинг.

    Куда синхронизировать данные такой репозиторий? Вариантов множество:
    1. Amazon S3-совместимые хранилища, которые можно установить на подконтрольном сервере (Minio попроще, Ceph сложнее)
    2. Клиент Dropbox, Google Drive или множества других сервисов
    3. Сервер ownCloud/nextCloud и агент, устанавливаемый на клиентскую ОС, по подобию Dropbox
    4. сервер VPS с ручным BAT скриптом для заливания файлов на сервер из клиентской ОС
    Ответ написан
    Комментировать
  • Альтернатива Dropbox с версионностью файлов?

    Deerenaros
    @Deerenaros
    Программист, математик, задрот и даже чуть инженер
    Очень интересный продукт на основе BitTorrent протокола, также можно посмотреть на аналог. Ну и собственные велосипеды на rsync также возможны, однако удобство такого варианта остаётся под вопросом. Зато полный контроль и многообещающие решения, навроде rsync на git-репозиторий (придётся смирится с большим оверхедом, зато немного велосипедов и полноценная и чрезвычайно удобная работа с историей даже без интернетов).
    Ответ написан
    4 комментария
  • Профессионально ли реализовал алгоритм?

    customtema
    @customtema
    arint.ru
    Более универсальный чек-лист:
    • Работает
    • Не падает, не ломается
    • Не тормозит, безопасен
    • Легко сопровождается, дорабатывается


    За сим все. Остальное - следствия.
    Ответ написан
    Комментировать
  • Как запустить две программы одновременно?

    @TNAT
    век живи, век учись
    У меня получалось с помощью этого:

    VMWare ThinApp - утилита для создания портативных версий всевозможных приложений. VMWare ThinApp упаковывает приложение в контейнер, содержащий всю необходимую информацию для работы на любом компьютере без необходимости инсталляции приложения. Благодаря этому программное обеспечение не затрагивает и не изменяет текущее состояние операционной системы.

    https://ru.wikipedia.org/wiki/VMware_ThinApp

    правильную версию ищите на торрентах
    Ответ написан
    4 комментария
  • Работа роутера?

    @yaror
    10 лет в мобильном телекоме
    Ситуация следующая.
    Каждое устройство в сотовой сети в момент регистрации сообщает сети свой IMEI - код устройства, по которому можно однозначно определить модель Вашего устройства.

    Да, нужна база IMEI с device capabilities - описанием того, что это за устройство и что оно умеет. Но она у мобильного оператора уже есть: Вам, когда Вы впервые вставляли сим-карту в новый телефон, прилетали SMS-кой настройки интернета? Настройки у разных производителей немного разные, поэтому надо знать модель абонентского аппарата.

    Получается, что как только ты вставляешь сим-карту в Wi-Fi-роутер, оператор без дополнительного оборудования понимает, что это роутер, а значит, он будет раздавать интернет через Wi-Fi. Это первый рубеж детекции, и его реализация оператору обходится совершенно бесплатно.

    Второй рубеж: анализ TTL, как писал Fixid.
    Надо понимать, что на первом рубеже будут отловлены только собственно роутеры, а включенная в настройках телефона точка доступа Wi-Fi оператору не видна.
    Но есть уловка: устройство, раздающее интернет по Wi-Fi, по умолчанию будет уменьшать поле TTL на всех проходящих через него ip-пакетах.
    Зная типичные начальные значения TTL для мобильных платформ, можно реагировать на все прочие значения как сигнал, что здесь где-то притаился Wi-Fi )
    Для реализации этого, оператору уже потребуются дополнительные расходы.
    Понятно, что ставить отдельное устройство для отлова любителей Wi-Fi никто не будет, поэтому обычно этим занимается операторский DPI - комплекс, занимающийся классификацией и "раскраской" абонентского трафика, благодаря которому и становится возможен, например, бесплатный вконтакте у некоторых операторов. Но, во-первых, что удивительно, не все DPI это умеют. Во-вторых, те, что умеют, умеют это за отдельные деньги в виде подлежащей покупке лицензии.

    Есть и третий рубеж, специально для отлова хитрож... абонентов вроде того же Fixid ;)
    Это эвристика.
    Тема интересная и увлекательная.
    Да, абонент может поменять IMEI прямо в настройках телефона.
    Да, абонент может перепрошить телефон, чтобы он не трогал TTL.
    Но, как только хитрых абонентов становится много, оператору становится выгодно вкладываться в расширенный анализ трафика.
    Итак, что можно сделать?
    Ну, сходу:

    Вы выходите в интернет прямо с телефона через встроенный браузер? Поздравляем, Вы только что в поле User-Agent протокола HTTP рассказали оператору, какая у вас мобильная платформа, и какой версии!
    Как так, с одного устройства оператор видит разные User-Agent, указывающие то на Android, то на Apple? Ребята, да у вас там Wi-Fi!

    TCP/IP fingerptinting. Разные мобильные платформы (те же Android/Apple) используют разные начальные значения полей в ip-пакетах. Да взять хоть тот же TCP Window size! Анализируя их, можно угадать как минимум производителя платформы. А комбинируя это с тем же анализом по IMEI...
    Ребята, а как так: само устройство у вас от Apple, а значения полей в ip-пакетах характерны для Windows Phone?
    Или почему ваш трафик похож то на Android, то на Blackberry?

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