19:20 | ||||||||||||||||||
|
Последние вопросы - Stack Overflow на русском Не работает тг бот на aiogram и asyncio Что я пробовал: запускаю бота через .venv загружал aiogram как просто в проект так и на виртуалку и обновлял, то же самое на всякий случай сделал с asyncio (знаю что она встроенная) токен бота написан в файле .env (написан так: BOT_TOKEN= и сразу Token без пробела и кавычек) Вот сам код: from os import getenv import asyncio import os from os import getenv import asyncio from aiogram import Router, Bot, Dispatcher, html from aiogram.filters import Command from aiogram.types import Message from dotenv import load_dotenv from aiogram.enums import parse_mode load_dotenv() token = getenv("BOT_TOKEN") dp = Dispatcher() rou = Router() dp.include_router(rou) @rou.message(Command("start")) async def start(message: Message): await message.answer("Я бот для записи подсчётов!\n", "Меня создал <b>@tgusername<b>\n", "Нужен бот пишите <a href='https://ru.stackoverflow.com/questions/1625519/%D1%81%D1%81%D1%8B%D0%BB%D0%BA%D0%B0%20%D0%BD%D0%B0%20%D0%BA%D0%B2%D0%BE%D1%80%D0%BA' сюда</a>", parse_mode="HTML") @rou.message(Command("help")) async def help(message: Message): await message.answer("Вот что я умею:\n", "/start - запустить меня\n", "/add - добавить данные\n", "/cheack - посмотреть данные\n", "/cheackdata - за определенный момент времени") async def main(): bot = Bot(token=token) await dp.start_polling(bot) if __name__ == "__main__": asyncio.run(main()) Ошибка: Traceback (most recent call last): File "d:\shopping_listbot\bot.py", line 39, in <module> asyncio.run(main()) ~~~~~~~~~~~^^^^^^^^ File "C:\Users\nocop\AppData\Local\Programs\Python\Python314\Lib\asyncio\runners.py", line 204, in run return runner.run(main) ~~~~~~~~~~^^^^^^ File "C:\Users\nocop\AppData\Local\Programs\Python\Python314\Lib\asyncio\runners.py", line 127, in run return self._loop.run_until_complete(task) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ File "C:\Users\nocop\AppData\Local\Programs\Python\Python314\Lib\asyncio\base_events.py", line 719, in run_until_complete return future.result() ~~~~~~~~~~~~~^^ File "d:\shopping_listbot\bot.py", line 34, in main bot = Bot(token=token) File "D:\shopping_listbot\.venv\Lib\site-packages\aiogram\client\bot.py", line 294, in __init__ validate_token(token) ~~~~~~~~~~~~~~^^^^^^^ File "D:\shopping_listbot\.venv\Lib\site-packages\aiogram\utils\token.py", line 18, in validate_token raise TokenValidationError(msg) aiogram.utils.token.TokenValidationError: Token is invalid! It must be 'str' type instead of <class 'NoneType'> type. May 17, 2026 8:59 AM ru.stackoverflow.com как в задаче LeetCode Plus One превратить 10 в [1, 0]? это мой код которым я пытался решить задачу class Solution(object): def plusOne(self, digits): last_element = digits[-1] last_element += 1 digits[-1] = last_element return(digits) Все бы ничего только я не понимаю один момент. Вот задача: Вам дано большое целое число, представленное в виде массива целых чисел digits , где каждый digits[i] — это ith -я цифра целого числа. Цифры расположены слева направо в порядке убывания значимости. Большое целое число не содержит ведущих 0' . Увеличьте большое целое число на единицу и верните полученный массив цифр. Вот что я не понимаю: Пример 3: Входные данные: digits = [9] Выходные данные: [1,0] Пояснение: Массив представляет собой число 9 . Прибавление единицы дает 9 + 1 = 10 . Таким образом, результат должен быть [1,0] . Как выводить числа таким образом? потому что когда мы прибавляем к 9 1 мы получаем 10 , как разбивать число на две цифры?? May 17, 2026 1:10 PM ru.stackoverflow.com Как скрыть внутреннюю реализацию коллекции в интерфейсе Java-сервиса? Я разрабатываю учебную систему учёта товаров на Java. У меня есть интерфейс: public interface AccountingSystem { void addProduct(Product product); Map<Integer, Product> getMapProductsInTheSystem(); } Map<Integer, Product> getMapProductsInTheSystem(); — вот этот метод и вызывает вопросы. Он возвращает внутреннюю реализацию, но, если завтра я захочу заменить Map на что-то другое, то придется менять интерфейс и код, который его использует. Как сделать систему не привязанную к деталям реализации? Есть ли какие-то общепринятые подходы? May 16, 2026 6:20 PM ru.stackoverflow.com Нужна помощь с запуском проекта java Нужна помощь с запуском проекта LeapMotionDroneControllerV2 Я плохо разбираюсь в Java и настройке проектов, но мне очень нужно довести этот проект до рабочего состояния. Я открываю проект в Visual Studio Code , все .jar библиотеки ( jssc, slf4j, Leap Motion SDK ) находятся в проекте, но VS Code их не видит — появляются ошибки типа package jssc does not exist и cannot find symbol. Пробовал добавлять библиотеки через java.project.referencedLibraries , через JAVA PROJECTS — без результата. Я новичок, поэтому буду очень благодарен за объяснение простыми словами и любые подсказки, как правильно собрать и запустить этот проект. May 17, 2026 3:53 PM ru.stackoverflow.com Не отображается шаблон: Method Not Allowed (GET): /account/logout/ Помогите пожалуйста разобраться в причине, по которой не отображается кастомный шаблон logout. Отмечу, что если я нажимаю на LOG OUT в админке джанго, то меня редиректит на шаблон, но не по адресу http://127.0.0.1:8000/account/logout/ а по http://127.0.0.1:8000/admin/logout/ . Делаю все в точности как в книге Django 4 в примерах (страницы 200-205). Console output: Watching for file changes with StatReloader System check identified no issues (0 silenced). December 08, 2023 - 08:17:52 Django version 5.0, using settings 'bookmarks.settings' Starting development server at http://127.0.0.1:8000/ Quit the server with CONTROL-C. [08/Dec/2023 08:18:05] "GET /account/login/ HTTP/1.1" 200 1433 Method Not Allowed (GET): /account/logout/ Method Not Allowed: /account/logout/ [08/Dec/2023 08:18:17] "GET /account/logout/ HTTP/1.1" 405 0 /account/urls.py: from django.urls import path, include from django.contrib.auth import views as auth_views from account import views urlpatterns = [ path('login/', auth_views.LoginView.as_view(), name='login'), path('logout/', auth_views.LogoutView.as_view(), name='logout'), ] settings: LOGIN_URL = 'login' LOGOUT_URL = 'login' # Менял 'login' на 'logout' - не помогло. INSTALLED_APPS = [ 'account', 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', ] account/templates/registration/logged_out.html: {% extends 'base.html' %} {% block title %}Logged out{% endblock %} {% block content %} <h1>Logged out</h1> <p> You have been succesfully logged out. You can <a href="{% url 'login' %}">log-in again</a> </p> {% endblock %} base.html: {% load static %} <!DOCTYPE html> <html> <head> <title>{% block title %}{% endblock %}</title> <link href="{% static "css/base.css" %}" rel="stylesheet"> </head> <body> <div id="header"> <span class="logo"><a href="{% url 'login' %}">Bookmarks</a></span> {% if request.user.is_authenticated %} <ul class="menu"> <li {% if section == "dashboard" %}class="selected" {% endif %}> <a href="{% url "dashboard" %}">My dashboard</a> </li> <li {% if section == "images" %}class="selected" {% endif %}> <a href="#">Images</a> </li> <li {% if section == "people" %}class="selected" {% endif %}> <a href="#">People</a> </li> </ul> {% endif %} <span class="user"> {% if request.user.is_authenticated %} Hello {{ request.user.first_name|default:request.user.username }}, <a href="{% url "logout" %}">Logout</a> {% else %} <a href="{% url "login" %}">Log-in</a> {% endif %} </span> </div> <div id="content"> {% block content %} {% endblock %} </div> </body> </html> account/views.py: @login_required def dashboard(request): return render(request, 'account/dashboard.html', {'section': 'dashboard'}) структура проекта: . ├── account │ ├── static │ │ └── css │ │ └── base.css │ ├── templates │ │ ├── account │ │ │ └── dashboard.html │ │ ├── registration │ │ │ ├── logged_out.html │ │ │ ├── login.html │ │ │ ├── password_change_done.html │ │ │ ├── password_change_form.html │ │ │ ├── password_reset_complete.html │ │ │ ├── password_reset_confirm.html │ │ │ ├── password_reset_done.html │ │ │ ├── password_reset_email.html │ │ │ └── password_reset_form.html │ │ └── base.html │ ├── admin.py │ ├── apps.py │ ├── forms.py │ ├── __init__.py │ ├── models.py │ ├── tests.py │ ├── urls.py │ └── views.py ├── bookmarks │ ├── asgi.py │ ├── __init__.py │ ├── settings.py │ ├── urls.py │ └── wsgi.py ├── db.sqlite3 ├── manage.py └── README.md May 16, 2026 9:04 PM ru.stackoverflow.com Как реализовать в telegram боте множественный выбор кнопок? Подскажите как проще всего в telegram боте в библиотеке aiogram реализовать множественный выбор для пользователя. Например пользователь выбирает 3 варианта из 10 и на основе его выбора выводится определенный вариант. Желательно реализовать это через inline кнопки. Видел пример с google таблицами, но возможно есть вариант проще. Проект разбит на модули в файле с инлайн клавиатурой лежит следующий код: from aiogram.types import InlineKeyboardMarkup, InlineKeyboardButton ikb_calc_exam = InlineKeyboardMarkup(row_width=3) ib_calc_geography = InlineKeyboardButton(text='География', callback_data='cd_calc_geography') ib_calc_literature = InlineKeyboardButton(text='Литература', callback_data='cd_calc_literature') ib_calc_chemistry = InlineKeyboardButton(text='Химия', callback_data='cd_calc_chemistry') ib_calc_russian = InlineKeyboardButton(text='Русский язык', callback_data='cd_calc_russian') ib_calc_mathematics = InlineKeyboardButton(text='Математика (профильный уровень)', callback_data='cd_calc_mathematics') ib_calc_history = InlineKeyboardButton(text='История', callback_data='cd_calc_history') ib_calc_physics = InlineKeyboardButton(text='Физика', callback_data='cd_calc_physics') ib_calc_socials = InlineKeyboardButton(text='Обществознание', callback_data='cd_calc_socials') ib_calc_biology = InlineKeyboardButton(text='Биология', callback_data='cd_calc_biology') ib_calc_international = InlineKeyboardButton(text='Иностранный язык', callback_data='cd_calc_international') ib_calc_informatics = InlineKeyboardButton(text='Информатика и информационно-коммуникационные технологии', callback_data='cd_calc_informatics') ib_calc_professional = InlineKeyboardButton(text='Профессиональное испытание', callback_data='cd_calc_professional') ib_calc_creavity = InlineKeyboardButton(text='Творческое испытание', callback_data='cd_calc_creavity') ikb_calc_exam.add(ib_calc_geography).add(ib_calc_literature).add(ib_calc_chemistry).add(ib_calc_russian).add( ib_calc_mathematics).add(ib_calc_history).add(ib_calc_physics).add(ib_calc_socials).add(ib_calc_biology).add( ib_calc_international).add(ib_calc_informatics).add(ib_calc_professional).add(ib_calc_creavity) И код из файла где попытался реализовать множественный выбор: from aiogram import types, Dispatcher from misc import bot, dp from Keyboard.Keyboard_calc_exam import ikb_calc_exam from aiogram.utils.callback_data import CallbackData cd = CallbackData('calc_exam', 'options') options_message = { ('geographi', 'russian', 'mathematics'): 'Message 1', ('geographi', 'russian', 'socials'): 'Message 2', ('geographi', 'russian', 'biology'): 'Message 3', ('literature', 'russian', 'history'): 'Message 4', ('literature', 'russian', 'socials'): 'Message 5', ('literature', 'russian', 'international'): 'Message 6', ('literature', 'russian', 'professional'): 'Message 7', ('literature', 'russian', 'creavity'): 'Message 8', ('chemistry', 'russian', 'mathematics'): 'Message 9', ('chemistry', 'russian', 'socials'): 'Message 10', ('chemistry', 'russian', 'biology'): 'Message 11', ('russian', 'mathematics', 'history'): 'Message 12', ('russian', 'mathematics', 'physics'): 'Message 13', ('russian', 'mathematics', 'socials'): 'Message 14', ('russian', 'mathematics', 'biology'): 'Message 15', ('russian', 'mathematics', 'international'): 'Message 16', ('russian', 'mathematics', 'informatics'): 'Message 17', ('russian', 'history', 'socials'): 'Message 18', ('russian', 'history', 'biology'): 'Message 19', ('russian', 'history', 'international'): 'Message 20', ('russian', 'physics', 'socials'): 'Message 21', ('russian', 'physics', 'biology'): 'Message 22', ('russian', 'physics', 'informatics'): 'Message 23', ('russian', 'socials', 'biology'): 'Message 24', ('russian', 'socials', 'international'): 'Message 25', ('russian', 'socials', 'professional'): 'Message 26', ('russian', 'socials', 'creavity'): 'Message 27', ('russian', 'international', 'creavity'): "message 28" } @dp.message_handler(commands=['calc_exam']) async def calc_exam(message: types.Message): await bot.send_message(chat_id=message.from_user.id, text='<em>Выбери три предмета</em>', parse_mode="HTML", reply_markup=ikb_calc_exam) await message.delete() @dp.callback_query_handler(lambda c: c.data.startswith('calc_exam')) async def process_calc_exam_callback(callback_query: types.CallbackQuery): selected_options = callback_query.data.split(':')[1].split(',') await bot.answer_callback_query(callback_query.id) new_cd = cd.new(options=','.join(selected_options)) keyboard = ikb_calc_exam.copy() for button in keyboard.inline_keyboard[0]: if button.callback_data.split(':')[1] in selected_options: button.text = f'✅ {button.text}' button.callback_data = new_cd else: button.text = f'❌ {button.text}' button.callback_data = button.callback_data.split(':')[0] if len(selected_options) == 3: if tuple(selected_options) in options_message: message_text = options_message[tuple(selected_options)] else: message_text = 'Invalid option combination' await bot.send_message(chat_id=callback_query.from_user.id, text=message_text) else: await bot.send_message_reply_markup(chat_id=callback_query.message.chat.id, message_id=callback_query.message.message_id, reply_markup=keyboard) def register_handler_calc_exam(dp: Dispatcher): dp.register_message_handler(calc_exam, commands=[calc_exam]) Но при запуске бота появляется клавиатура, но при нажатии не чего не происходит и ошибки не появляются, в чем может быть проблема? May 17, 2026 5:02 AM ru.stackoverflow.com Как в aiogram3 отправить фото Пишу бота на aiogram3, столкнулся с такой проблемой - бот не отправляет фото. Читал документацию и написал так же, но безуспешно. Этот код работает только с ссылкой на фото из интернета, а фото из папки не отправляет, писал разный путь до фото, но ошибка всегда одна и та же. from aiogram import Bot from aiogram.types import Message, FSInputFile photo = FSInputFile("photo_2020-09-03_03-42-41.jpg") async def menu(message: Message): await message.answer_photo(photo=photo, caption="hi") Выдаёт следующую ошибку aiogram.exceptions.TelegramNetworkError: ClientOSError: [Errno 2] Can not write request body for https://api.telegram.org/bot{тут токен}/sendPhoto May 17, 2026 1:02 PM ru.stackoverflow.com Вывод Reply кнопки и блокировка клавиатуры При старте телеграм бота по команде /start выводится Reply кнопка, при этом необходимо заблокировать возможность пользователя что-то ввести в поле для ввода. Как это поле скрыть либо заблокировать функционал клавиатуры? https://disk.yandex.ru/i/0r57wT_edGilPw Функция вывода кнопки def sogl_keyboard(): sogl_keyboard = types.ReplyKeyboardMarkup(resize_keyboard=True) sogl_check = types.KeyboardButton('✅ Даю согласие на обработку персональных данных') sogl_keyboard.add(sogl_check) return sogl_keyboard May 17, 2026 1:06 AM ru.stackoverflow.com Как при построчном чтении CSV в Python записывать только пользователей с покупками? Не могу могу объединить два файла так, чтобы в финальный файл funnel.csv записывались не все строки из visit_log.csv. А только те, чьи пользователи совершали покупки. Подскажите, пожалуйста, что надо делать? Само задание: Для каждого user_id в файле visit_log.csv определите третий столбец с категорией покупки (если покупка была, сам файл visit_log.csv изменять не надо). Запишите в файл funnel.csv визиты из файла visit_log.csv, в которых были покупки с указанием категории. Учтите условия на данные: содержимое purchase_log.txt помещается в оперативную память компьютера содержимое visit_log.csv - нет; используйте только построчную обработку этого файла. Код ниже with open('visit_log.csv', 'r') as f, open('funnel.csv', 'w') as f2: for row in f: line_list=row.strip().split(',') if line_list[0] in new_dict.keys(): line_list.append(new_dict[line_list[0]]) add_line=','.join(line_list) elif line_list[0]=='user_id': line_list.append('category') add_line=','.join(line_list) else: add_line=','.join(line_list) f2.write(add_line+'\n') import csv with open('funnel.csv', newline='') as File: reader = csv.reader(File) for row in reader: print(row) *['d1a2f22f01', 'other']* *['c6bd818cce', 'email']* *['c4f230c2a5', 'None']* **['463ba5e7a4', 'context', 'Бытовая техника']** *['46ca7872b5', 'other']* *['8bad7f963f', 'context']* ......... ......... ......... вот нужны в ответе только строки с типом покупки May 17, 2026 10:04 AM ru.stackoverflow.com Aiogram 2. Как игнорировать команды из чата? Бот должен реагировать только на команды в ЛС Мне нужно чтобы бот не реагировал на команды /start /help ну и вообще все которые отправляют в чат. Мне нужно чтобы бот реагировал только на команды в ЛС, как это реализовать? May 17, 2026 2:08 PM ru.stackoverflow.com Как вызвать функцию из другого компонента во вью? есть компонент block1.vue там есть <p class="test1" @click="func()">Сontact</p> есть block2.vue там нужно вызвать эту же функцию но так не будет ра <button class="test2" @click="func()">Block</button> May 16, 2026 8:06 PM ru.stackoverflow.com Финансовый агрегатор Новости в ВК #новости #news #novosti #события #происшествия #пресса #сми #подслушано #рекомендации #читать Источник Спонсор Лента новостей | ||||||||||||||||||
|
|
||||||||||||||||||
| Всего комментариев: 0 | |
















