Задать вопрос
  • Как исправить ошибку при создании тг-бота:TypeError: Dispatcher.__init__() takes 1 positional argument but 2 were given?

    @Everything_is_bad
    стандартное, уже 100500 раз
    1. код под одну версию aiogram, а установлена другая
    2. сначала учим основы, потом пишем ботов
    Ответ написан
    2 комментария
  • Как сделать чтобы извлекался user_id пользователя, а не бота?

    Vindicar
    @Vindicar
    RTFM!
    Читаем доки telebot.
    https://docs.python-telegram-bot.org/en/stable/tel...
    message (telegram.MaybeInaccessibleMessage, optional) - Message sent by the bot with the callback button that originated the query

    Выделение моё. Теперь понятно, почему ты получаешь id самого бота?
    А если чуть выше глянуть, там ещё интереснее.
    from_user (telegram.User) – Sender.


    Привыкай находить и читать документацию, там много интересного.
    Ответ написан
    1 комментарий
  • Какую базу данных использовать для хранения метаданных?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Основной use-case при работе с любыми данными это "запрос".

    Ты должен задать себе вопрос как я буду эти данные искать? По каким атрибутам?
    Например базы данных семейства key-value почти всегда всем подходят и всем нравятся
    за высокую скорость и дешевизну. Но это - только при условии что вы делаете поиск по ключевым атрибутам.
    Но вы не сможете к ним сделать агрегации (group by).

    Ничего плохого не могу сказать про Mongo. Но загрузи сначала туда хотя-бы сотню тысяч
    ситетических документов и смоделируй нагрузку. Вдруг Монга уже на этом этапе захлебнется
    и не потянет. Получается что твой выбор был неправильный.

    Из личного опыта. Часто выбирают какую-то БД из того что человек (команда) уже раньше
    с ней поработали и уже имеет опыт. И такое реально было и с Ораклом и с MS-SQL. Люди их
    выбирали не потому что они хороши а чаще всего потому что "так привыкли". И десяток
    лицензий были уже давно куплены. Почему-бы не использовать. Заказчик оплатил.
    Так жить проще. Так и живут. И так строят архитектуры.
    Ответ написан
    4 комментария
  • Уведомления в телеграм боте?

    politon
    @politon
    HTML5,CSS3,JS,PHP,SQL,API,canvas,animation...
    В телефон через сервис рассылки смс
    В телеге же у вас диалог с ботом есть. Отправляете сообщения на свой id
    Ответ написан
    Комментировать
  • Как сделать так, чтобы человек мог писать в канал некоторые команды ботов, а некоторые не мог?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Никак не сделать. Вы не можете запретить человеку писать что угодно. Вы можете только на своей стороне, в боте, проверять, разрешена ли данная команда данному пользователю, и выполнять или не выполнять её.
    Ответ написан
    Комментировать
  • Почему не срабатывает обработчик @for_user_router.message(F.successful_payment) успешного платежа SuccessfulPayment через Telegram API?

    mihailgok
    @mihailgok
    Фронтенд-разработчик, филантроп
    Попробуйте не через router а через dispatcher

    dp = Dispatcher()
    ....
    @dp.message(F.successful_payment)
    async def star_payment(msg: Message, bot: Bot):
    Ответ написан
    Комментировать
  • Как создать телеграм бота, который принимает в канал только при наличии подписки на другой канал?

    saboteur_kiev
    @saboteur_kiev Куратор тега Python
    software engineer
    не знаю что такое подписка. Можете просто проверять есть ли юзер в определенном чате, и тогда в другом чате подтверждать его реквест.
    Документация по бот апи тут:
    https://core.telegram.org/bots/api#getchatmember
    https://core.telegram.org/bots/api#approvechatjoin...
    Ответ написан
    2 комментария
  • Бот отправляет 2 раза сообщение, которое не нужно отправлять в данный момент + не хочет отправлять результаты в группу, Как решить эти 2 проблемы?

    Vindicar
    @Vindicar
    RTFM!
    return (test_g, test_k)
    bot.send_message(айди группы, f'@{message.from_user.username} / {message.from_user.id} отправил тест на проверку\nЕго варианты были\nhttps://forms.gle/{test(message)[0]}\nhttps://forms.gle/{test(message)[1]}')


    Полнейшая чушь.

    Во-первых, запомни, что обработчики событий (всё, что декорировано message_handler() или подобным) не следует вызывать самостоятельно. Вот просто не следует. Их вызывает бот по мере надобности. Как следствие, возвращать из них тоже ничего не следует - бот это проигнорирует, а ты эти значения не получишь.

    Во-вторых, выучи концепцию побочных эффектов при вызове функции и держи её в голове. Ты на ровном месте делаешь два вызова test(), которая имеет побочные эффекты в виде отправки сообщения, а потом удивляешься, что два раза отправляются сообщения! Причем именно что на ровном месте. Вот тебе что, грозят болтающееся отрезать за сохранение результата test() в ещё одну локальную переменную перед использованием этого результа? Конечно, это непринципиально, потому что test() вызывать нельзя (см. пункт 1), но всё равно показательно.

    А что касается передачи инфы о действиях пользователя - заведи хранилище вида "id пользователя - пара ссылок". Подойдёт даже словарь, если тебе не нужно, чтобы инфа переживала перезапуск бота. И вот оттуда уже в well() вытаскивай инфу о том, что проходил текущий пользователь.

    Учись программировать, потом пиши ботов. Не наоборот.
    Ответ написан
    Комментировать
  • Потеря связи в боте telebot, в чем могут быть проблемы?

    @Everything_is_bad
    но когда перевел бота на домашний сервер
    это одна из возможных причин, качество обычной техники и домашнего интернета очень плохое.

    remote end closed connection without response
    а это вторая, причиной этого может быть превышение лимита запросов на сторонний сервис, а может просто проблемы с сетью, как следствие первой причины

    Надо делать правильно, нормальный хостинг и webhook.
    Ответ написан
    Комментировать
  • Как настроить авторизацию в telegram боте?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    Идея? Есть отличная оригинальная идея - немножко подучиться программировать на выбранном вами языке. Не искать карьеру разработчика ботов беззнания программирования, а именно подучить язык и основы алгоритмизации.
    А задача ваша решается просто. Начать надо с декомпозиции.
    При запуске бота вам нужно открыть этот текстовый файл и загрузить его контент в структуру, и, если не получилось, то создать пустую структуру.
    Если пользователь, нажавший у бота кнопку старт не найден в этой структуре, то бот должен запустить сценарий регистрации. Что вы под этим понимаете? Вопросы какие-то задать пользователю и сохранить ответы?
    При окончании регистрации нужно сохранить структуру в файл.

    С каким именно пунктом вам что-то не ясно?
    Если со всеми, то нужно учиться программировать,а ботов писать вам рано. Попробуйте взять учебник и читать по порядку. первый раз быстро и не останавливаясь, а второй раз вдумчиво и выполняя все задания.

    После этого у вас вот эти вот вопросы отпадут все.
    Ответ написан
    Комментировать
  • Почему не срабатывает if? как это пофиксить?

    Vindicar
    @Vindicar
    RTFM!
    Учи основы работы с файлами в питоне и включай голову.
    Чтение и запись в файл производится по т.н. текущей позиции. При открытии файла текущая позиция стоит в начале файла, а при чтении/записи она смещается на длину прочитанного/записанного.
    А теперь смотри что ты делаешь. У тебя есть вызов fr = f.readlines(). Он построчно прочитает всё содержимое файла в список, и сохранит список в переменную fr. При этом текущая позиция окажется в конце файла - ты же прочитал всё содержимое.
    Как следствие, все дальнейшие вызовы read() и readlines() не смогут прочитать НИЧЕГО - ты уже в конце файла, дальше ничего нет. Они будут возвращать пустую строку или пустой список - а ты этого явно не ожидаешь.
    Раз уж ты читаешь весь файл в fr - то и дальше работай не с файлом, а со списком fr. Ну и проверка на chat_id у тебя кривая - что, если так совпадёт, что твой chat_id будет содержаться внутри второго значения (токен)? Такое может произойти, хоть это и маловероятно.

    Я бы посоветовал не выпендриваться со своим форматом данных в текстовике, а использовать модуль json. Он гораздо удобнее для хранения структурированной информации. А если указать правильные параметры при записи в файл, то полученный файл будет более-менее человеко-читаемым.
    Ответ написан
    2 комментария
  • Пишу телеграм бота на пайтон и вылезает ошибка KeyError: 'recipes'. Как решить?

    @Everything_is_bad
    сначала учим основы python, только потом пишем ботов
    Ответ написан
    Комментировать
  • Как исправить мой код 1С: Предприятие нахождение максимального элемента в табличной части чтоб он не выдавал ошибку?

    Mikhail_E
    @Mikhail_E
    1С, SQL
    Ужас какой.
    Если по вашему коду тогда так :
    Выборка=Справочники.Варианты_головных_уборов.Выбрать(); 
    Пока Выборка.Следующий() Цикл
    	Макс2=0;
    		Для каждого а из Выборка.ТабличнаяЧасть1 Цикл
    			Если Макс2>а.Количество_материалов тогда
    				Макс2=а.Количество_материалов;
    			КонецЕсли;        		
    		КонецЦикла; 
    			Сообщить(макс2.Количество_материалов);
    КонецЦикла;

    А вообще это запросом делается конечно.
    Запрос = Новый Запрос("Выбрать Первые 1 
    		|т.Ссылка как ВариантГоловногоУбора,
    		|Максимум(т.Количество_материалов) как МаксимальноеКоличествоМатериалов
    		|Из Справочник.Варианты_головных_уборов.ТабличнаяЧасть1 как т
    		|Сгруппировать по т.Ссылка
    		|Упорядочить по МаксимальноеКоличествоМатериалов Убыв");
    	РезультатВыборка = Запрос.Выполнить().Выбрать();
    	Если РезультатВыборка.Следующий() Тогда
    		Сообщить("Вариант:"+РезультатВыборка.ВариантГоловногоУбора+", Количество материалов:"+РезультатВыборка.МаксимальноеКоличествоМатериалов); 
    	КонецЕсли;
    Ответ написан
    Комментировать
  • Как пофиксить telebot не отправляет сообщение?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    Потому что current_time нигде не меняется в цикле, например. Но тут не весь код, причин ещё может быть даже кроме этой миллион. А эта причина точно делает этот код бесполезным полностью.
    Ответ написан
    3 комментария
  • Не могу понять, как использовать переменную за пределами функции main?

    @Everything_is_bad
    как мне использовать переменную alerts_client за пределами функции main?
    определить эту переменную за пределами функции main
    Ответ написан
    Комментировать
  • Как в VSCode отключить это?

    @mezhuev
    Системный администратор
    Просто щёлкните по «don't show» и подсказка не будет появляться. Или откройте параметры (Ctrl+,) и в поиске введите workbench.editor.empty.hint.
    Ответ написан
    3 комментария
  • Почему row[0] обращается к None объекту?

    @Everything_is_bad
    Почему row[0] обращается к None объекту?
    Потому что в row None. А почему в row None? Потому что None вернул sql запрос. Элементарная же логика
    Ответ написан
    5 комментариев
  • Как вывести информацию из списка и кортежа?

    Rimush
    @Rimush
    Ходят легенды о некогда известном, но сейчас уже утраченном знании.
    Имя тому знанию "Циклы":
    ppls = [('user1', 73), ('user2', 43), ('user3', 39), ('user4', 37), ('user5', 27),
            ('user6', 22), ('user7', 11), ('user8', 10), ('user9', 10), ('user10', 9)]
    
    string = 'ТОП 10 ИГРОКОВ:\n'
    for ppl in ppls:
        string += f'{ppl[0]} - {ppl[1]}\n'
    
    print(string)
    Ответ написан
    Комментировать
  • Как поменять for i in range на while?

    Vindicar
    @Vindicar
    RTFM!
    Изменяй. Разрешаю.

    Если серьёзно, то учебные задачи надо решать самостоятельно, иначе какой смысл браться?
    Но тут достаточно понимать, что делает for i in range(x): ...
    Это близкий эквивалент такого кода:
    i = 0
    while i < x:
        ...  # тут тело цикла for
        i += 1

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