Почему не работает inline ru
Перейти к содержимому

Почему не работает inline ru

  • автор:

Почему display: inline не работает

Внутри вашего элемента ul с display: inline находятся блочные элементы li , которые «распирают» строчный элемент изнутри до состояния блока. Это как в целлофановый пакетик положить кирпич. Пакетик примет габариты кирпича как минимум.

Если вам нужно выстроить элементы в одну строку, то задайте элементам li display: inline , как вам в соседнем комментарии посоветовали.

А если вам нужно чтобы весь ul был строчным, а li внутри него так и остались столбиком, то нужно задавать элементу ul свойство display: inline-block .

Почему не работает inline button?

Разбираюсь в aiogram пытаюсь реализовать inline button, но почему ту они не работают, хендлер написан, но реакции все равно нет. Бот состоит из нескольких файлов.

import asyncio import config.bot_init from aiogram import Bot, Dispatcher, types from aiogram.types import BotCommand from aiogram.contrib.fsm_storage.memory import MemoryStorage async def set_commands(bot: Bot): commands = [ BotCommand(command="/tshirt", description="Заказать блюда"), BotCommand(command="/cancel", description="Отменить текущее действие") ] await bot.set_my_commands(commands) async def main(): bot = Bot(token=config.bot_init.BOT_TOKEN) config.bot_init.dp = Dispatcher(bot, storage=MemoryStorage()) dp = config.bot_init.dp print(config.bot_init.dp) from handler.Tshirt import register_handlers_tshirt from handler.common import register_handlers_common register_handlers_common(dp) register_handlers_tshirt(dp) await set_commands(bot) await dp.start_polling() if __name__ == '__main__': asyncio.run(main())
from aiogram import Dispatcher, types from aiogram.dispatcher import FSMContext from aiogram.dispatcher.filters.state import State, StatesGroup from aiogram.dispatcher.filters import Text import config.bot_init available_tshirt_names = ["красная", "белая", "зеленая", "черная", "синяя"] available_tshirt_sizes = ["XS", "S", "M", "L", "XL"] class OrderTshirt(StatesGroup): waiting_for_tshirt_name = State() waiting_for_tshirt_size = State() def register_handlers_tshirt(dp: Dispatcher): dp.register_message_handler(tshirt_start, commands="tshirt", state="*") dp.register_message_handler(tshirt_chosen, state=OrderTshirt.waiting_for_tshirt_name) dp.register_message_handler(tshirt_size_chosen, state=OrderTshirt.waiting_for_tshirt_size) @config.bot_init.dp.callback_query_handler(text_startswith="names_tshirt:") async def tshirt_call(call: types.CallbackQuery): name_tshirt = call.data.split(":")[1] print(name_tshirt) async def tshirt_start(message: types.Message): # keyboard = types.ReplyKeyboardMarkup(resize_keyboard=True) keyboard = types.InlineKeyboardMarkup() for name in available_tshirt_names: keyboard.add(types.InlineKeyboardButton( text=name, callback_data=f"names_tshirt:")) await message.answer("Выберите футболку:", reply_markup=keyboard) print('next') await OrderTshirt.waiting_for_tshirt_name.set() def register_handlers_tshirt(dp: Dispatcher): dp.register_message_handler(tshirt_start, commands="tshirt", state="*") dp.register_message_handler(tshirt_chosen, state=OrderTshirt.waiting_for_tshirt_name) dp.register_message_handler(tshirt_size_chosen, state=OrderTshirt.waiting_for_tshirt_size)

Что у меня не так в программе реализовано?

  • Вопрос задан более года назад
  • 1216 просмотров

Комментировать
Решения вопроса 1

Нажимаем кнопку и.. ничего не происходит! Почему? Если у бота было включено логгирование, то вы могли заметить, что приходит обновление типа CallbackQuery. Так вот именно его нам и нужно отлавливать.

Ответ написан более года назад
newPsevdonim @newPsevdonim Автор вопроса
IKIQ а что такое по вашему функция под названием tshirt_call?

Попробуйте в main.py перенести импорты в начало файла, после «from aiogram.contrib.fsm_storage.memory import MemoryStorage»

from handler.Tshirt import register_handlers_tshirt from handler.common import register_handlers_common

А вообще какую-нибудь ошибку выдает?

newPsevdonim @newPsevdonim Автор вопроса

IKIQ, если импорты вначале, то выдает ошибка, что переменная типа none не имеет метода callback.
А если то как сейчас, то он просто никак не реагирует, не ошибок ничего. Просто появляется значок загрузки

newPsevdonim, вот это ближе к проблеме
Ошибка при нажатии на инлайн кнопку?
print(name_tshirt) выводится?

Потому что сейчас у вас так: программа выполняется в бесконечном цикле

if __name__ == ‘__main__’:
asyncio.run(main())

И импорт происходит постоянно
newPsevdonim @newPsevdonim Автор вопроса
IKIQ, ошибка не выводится. И с каких пор запуск скрипта по названию является бесконечным циклом?
Я про эту ошибку

если импорты вначале, то выдает ошибка, что переменная типа none не имеет метода callback.

И с каких пор запуск скрипта по названию является бесконечным циклом?

если актуально, можете полный код сбросить?
newPsevdonim @newPsevdonim Автор вопроса
IKIQ, думаю так будет удобнее
https://github.com/SolovevDR/ExampleShopBot
main.py

import asyncio import config.bot_init from aiogram import Bot, Dispatcher, types from aiogram.types import BotCommand from aiogram.contrib.fsm_storage.memory import MemoryStorage async def set_commands(bot: Bot): commands = [ BotCommand(command="/tshirt", description="Заказать блюда"), BotCommand(command="/cancel", description="Отменить текущее действие") ] await bot.set_my_commands(commands) async def main(): # Объявление и инициализация объектов бота и диспетчера bot = Bot(token=config.bot_init.BOT_TOKEN) config.bot_init.dp = Dispatcher(bot, storage=MemoryStorage()) dp = config.bot_init.dp print(config.bot_init.dp) from handler.Tshirt import register_handlers_tshirt from handler.common import register_handlers_common # Регистрация хэндлеров register_handlers_common(dp) # register_handlers_drinks(dp) register_handlers_tshirt(dp) @dp.callback_query_handler(text_startswith="names_tshirt:") async def tshirt_call(call: types.CallbackQuery): name_tshirt = call.data.split(":")[1] print(name_tshirt) await bot.answer_callback_query(call.id, text=f'Нажата кнопка!') await bot.send_message(call.from_user.id, f'Нажата кнопка!') # Установка команд бота await set_commands(bot) # Запуск поллинга # await dp.skip_updates() # пропуск накопившихся апдейтов (необязательно) await dp.start_polling() if __name__ == '__main__': asyncio.run(main())

Tshirt.py

from aiogram import Dispatcher, types from aiogram.dispatcher import FSMContext from aiogram.dispatcher.filters.state import State, StatesGroup from aiogram.dispatcher.filters import Text import config.bot_init available_tshirt_names = ["красная", "белая", "зеленая", "черная", "синяя"] available_tshirt_sizes = ["XS", "S", "M", "L", "XL"] class OrderTshirt(StatesGroup): waiting_for_tshirt_name = State() waiting_for_tshirt_size = State() def register_handlers_tshirt(dp: Dispatcher): dp.register_message_handler(tshirt_start, commands="tshirt", state="*") dp.register_message_handler(tshirt_chosen, state=OrderTshirt.waiting_for_tshirt_name) dp.register_message_handler(tshirt_size_chosen, state=OrderTshirt.waiting_for_tshirt_size) async def tshirt_start(message: types.Message): # keyboard = types.ReplyKeyboardMarkup(resize_keyboard=True) keyboard = types.InlineKeyboardMarkup() for name in available_tshirt_names: keyboard.add(types.InlineKeyboardButton( text=name, callback_data=f"names_tshirt:")) print(f"names_tshirt:") await message.answer("Выберите футболку:", reply_markup=keyboard) print('next') #await OrderTshirt.waiting_for_tshirt_name.set() # Обратите внимание: есть второй аргумент async def tshirt_chosen(message: types.Message, state: FSMContext): print('tshirt') if message.text.lower() not in available_tshirt_names: await message.answer("Пожалуйста, выберите футболку, используя клавиатуру ниже.") return await state.update_data(chosen_tshirt=message.text.lower()) keyboard = types.ReplyKeyboardMarkup(resize_keyboard=True) for tshirt in available_tshirt_sizes: keyboard.add(tshirt) # Для простых шагов можно не указывать название состояния, обходясь next() await OrderTshirt.next() await message.answer("Теперь выберите размер:", reply_markup=keyboard) async def tshirt_size_chosen(message: types.Message, state: FSMContext): if message.text not in available_tshirt_sizes: await message.answer("Пожалуйста, выберите размер, используя клавиатуру ниже.") return user_data = await state.get_data() await message.answer(f"Вы заказали футболку .\n" f"Попробуйте теперь заказать напитки: /drinks", reply_markup=types.ReplyKeyboardRemove()) await state.finish() def register_handlers_tshirt(dp: Dispatcher): dp.register_message_handler(tshirt_start, commands="tshirt", state="*") dp.register_message_handler(tshirt_chosen, state=OrderTshirt.waiting_for_tshirt_name) dp.register_message_handler(tshirt_size_chosen, state=OrderTshirt.waiting_for_tshirt_size)

Почему не работает инлайн клавиатура, aiogram?

nki

Скриншоты кода запрещены, см.п.3.8 Регламента; не хулиганьте пожалуйста.
Также вопрос необходимо конкретизировать, дополнить. Как именно не работает клавиатура, какие ошибки, логи, как пробовали исправить и что вышло.

Михаил Кростелев @twistfire92

начнем с того, что вы хотите от этой клавиатуры получить? Сейчас у вас кнопки должны переводить по каким-то ссылкам. Они не переводят? В параметре url указаны реальные ссылки, не «url» и «url1»?

Vindicar

dp.message_handler(commands=[‘start’])
Символ @ в начале не забыл?
Возможно у тебя версия 3.0, но на 2.0 это выглядит примерно так:

buttons = [ aiogram.types.InlineKeyboardButton(text="Bat1", url=''), aiogram.types.InlineKeyboardButton(text="Bat2", url='') ] keyboard = aiogram.types.InlineKeyboardMarkup(row_width=3).add(*buttons) @dp.message_handler(commands=['start']) async def start_handler(message: aiogram.types.Message): user_id = message.from_user.id await bot.send_message(chat_id=user_id, text='Hellow World', reply_markup=keyboard)

Решения вопроса 0
Ответы на вопрос 1

gnifajio

Совершенствуюсь каждый день

  1. Вы забыли @ перед декоратором
  2. Вы передали невалидные url

Этот код будет работать:

@dp.message_handler(commands='start') async def start(message: types.Message): inline = InlineKeyboardMarkup(row_width=2) inline.row(InlineKeyboardButton(text='Url Button 1', url='https://t.me/username'), InlineKeyboardButton(text='Url Button 2', url='https://toster.ru')) await message.answer('Helo, World', reply_markup=inline)

inline.ru Узнать Статус Сейчас

Вы столкнулись с проблемой, пытаясь открыть сайт inline.ru ? Узнайте, может быть, проблемы с вашей стороны или же сайт упал.
Проверьте состояние inline.ru – может сайт упал, или же проблема у вас!

Проверка состояния inline.ru
Click here to visit inline.ru

inline.ru Состояние на Сегодня

inline.ru Статус Отключений по Всему Миру

Пошаговая Инструкция если inline.ru упал

Q: Что делать если inline.ru упал?

Если inline.ru на самом деле не «упал» но не доступен на вашей системе, попробуйте альтернативу этому сайту.

Однако во многих случаях, проблема объясняется неправильным DNS. В этом случае, просто используйте этот IP (195.2.82.81), введите его в адресную строку вашего браузера и нажмите ввод. Если это сработает, то будьте уверены – проблема в DNS. Исправить его можно здесь.

Q: Что если inline.ru на самом деле упал?

Если inline.ru на самом деле упал, вы можете:

  1. Попробовать альтернативную ссылку, к примеру m. inline.ru , имя сайта с «www» и без.
  2. Подождать – большинство зависаний и других неполадок не длятся долго.
  3. Оставить запрос на форуме, блоге, странице фейсбука – обычно менеджеры выкладывают информацию о планируемых работах на сайте, так что всегда полезно взглянуть.
  4. Попробовать альтернативу – Нажмите, чтобы посмотреть, если таковая есть. В большинстве случаев вы ее легко можете найти!

Поиск Сайтов Похожих на inline.ru

Разочарованы потому, что inline.ru упал/не открывается? Ни каких проблем. Можете найти здесь похожий сайт. Уже нашли? Пожалуйста, подскажите нам.

Попросить Помощи Администратора inline.ru

Всегда можно узнать причину у администратора inline.ru . Просто воспользуйтесь любыми из кнопок и скопируйте URL и вставьте на страницу в Facebook, Twitter или на форуме как ссылку, когда обращаетесь за помощью.

Скопировать ссылку:

Советы по Устранению Неполадок

Попробуйте это, если inline.ru упал (но не на самом деле) или не открывается только у вас:

Шаг 1Очистить кэш нажав CTRL + F5. Если это не помогло, перейдите к Шагу 2.
Шаг 2Попробуйте перезапустить ваш модем. Также, перезагрузите систему. Если проблема осталась, переходите к Шагу 3.
Шаг 3если проблема осталась; ваш антивирус может блокировать сайт. Отключите антивирусные программы (если такие есть) и отключите файервол.
Шаг 4если проблема до сих пор не решена, значит ваш DNS может быть неверным. DNS это инструмент, который переводит веб адрес (как например issitedownrightnow.com) в машинный адрес, называемый IP (к примеру 50.116.7.135).

Чтобы убедиться, что это ошибка DNS, используйте этот IP (195.2.82.81) и поместить его в адресной строке браузера и нажмите ввод. Если нет вопрос загрузки inline.ru , это подтверждает DNS неисправен. Исправить это здесь!

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *