Задать вопрос
  • Как получить доступ к локальной переменной?

    @kavermoki Автор вопроса
    Everything_is_bad, так а почему сейчас ошибок нет? запись в бд успешна. Все работает, если не верно - то почему работает?

    Да я понимаю, что не могу обращаться в пустоту.. а в чем тогда проблема? почему работает то, что не должно работать
    Написано
  • Как получить доступ к локальной переменной?

    @kavermoki Автор вопроса
    Everything_is_bad, разобрался, я не верно делаю запросы:

    это:
    result = self.cursor.execute("SELECT 'signup' FROM 'users' WHERE 'user_id' = ?", (user_id,)).fetchall()

    поменял на это:
    result = self.cursor.execute("SELECT signup FROM users WHERE user_id = ?", (user_id,)).fetchall()
    Написано
  • Как получить доступ к локальной переменной?

    @kavermoki Автор вопроса
    Everything_is_bad, раз три естественно, потому что цикл не понятен. А я пытаюсь, пройтись по массиву result и записать в новую переменную signup значение нулевого индекса..

    что то типо такого....
    x = {'4', '3', '2', '1'}
    for row in x:
        y = str(row[0])
    print(y)


    в каком то видео-материале, это работает, но я не понимаю почему:
    67c0536d8e7ce100509420.png
    Написано
  • Как получить доступ к локальной переменной?

    @kavermoki Автор вопроса
    setnickname, я же обращаюсь к нулевому индексу в массиве result где и есть setnickname. Далее следуюет проверка....
    Написано
  • Как выполнить функцию anti_flood только в чате игнорируя функцию в боте?

    @kavermoki Автор вопроса
    Everything_is_bad, да я понимаю что это дичь, на данном этапе, мои навыки упираются на это решение. Пошел изучать мидлварь.
    Написано
  • Как пройтись циклом for в файле txt?

    @kavermoki Автор вопроса
    Vindicar, понял, спасибо. Ну я не собирался вычесывать такие предложения как "гребля заштрихуй оскорблять" - уж больно заморочено.. Может в будущем, когда опыта наберусь. В таких случаях модератор в ручном порядке может мутить пользователя.. А эту уже совсем другая история :) Еще раз спасибо за пояснения и помощь!
    Написано
  • Как пройтись циклом for в файле txt?

    @kavermoki Автор вопроса
    Vindicar, сначала сделал, проверил, потом понял что он не удалят сообщение, если это запрещенное слово внутри какого либо предложения. Сделал вот так:

    @dp.message_handler(lambda msg: any(word in msg.text.lower() for word in word_list))
    async def mat(message: types.Message):
        await message.delete()
        await message.answer(f"{message.from_user.first_name}, ваше сообщение удалено!")

    правильно ли я сделал?

    и еще вопрос, почему нельзя сначала удалять сообщение, а потом писать об его удалении?
    Если сделать наоборот, то на секунду все равно видно сообщение с запрещенным слово, только после оно удаляется...
    Написано
  • Как пройтись циклом for в файле txt?

    @kavermoki Автор вопроса
    Vindicar, спасибо большое за пояснение! Все сработало
    Написано
  • Как пройтись циклом for в файле txt?

    @kavermoki Автор вопроса
    Everything_is_bad, а можно пояснить немного? Потому что я не такой мега спец.. Я писал отдельной функцией, просто ничего не происходит, когда пользователь пишет слово из файла "all_mat.txt"
    Написано
  • Как обойти ошибку сервера Telegram при использовании метода answer_photo?

    @kavermoki Автор вопроса
    Сергей П, да, я понял вас, что нельзя редактировать текстовое сообщение с помощью edit_media... Но есть же способы, методы как это обойти. Т.е. у меня при старте программы у меня текст, потом идет кнопка которая покажет медиа, где будут другие кнопки с текстом.

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

    Это либо мне нужно при старте создать медиа, и редактировать медиа в последующих коллбэк, либо не создать медиа вовсе и редактировать только тексты.
    Написано
  • Как обойти ошибку сервера Telegram при использовании метода answer_photo?

    @kavermoki Автор вопроса
    Сергей П, Хорошо, я был не прав.. Сократил весь код до минимума и вот что получилось:

    from aiogram import Bot, Dispatcher, F
    from aiogram.filters import CommandStart
    from aiogram.types import (CallbackQuery, Message)
    import config
    import keyboards
    from aiogram.types import FSInputFile
    from aiogram.types import InputMediaPhoto
    
    bot = Bot(token=config.TOKEN)
    dp = Dispatcher()
    
    @dp.message(CommandStart())
    async def process_start_command1(message: Message):
        await message.answer(text='Добрый день!', reply_markup=keyboards.keyboard, parse_mode='html')
    
    @dp.callback_query(F.data == 'bt1')
    async def process_button_1_press(callback: CallbackQuery):
        photo = FSInputFile('monitoring.jpg')
        await callback.message.edit_media(InputMediaPhoto(media=photo, caption='Текст'), reply_markup=keyboards.keyboard1)
        await callback.message.delete()
    
    @dp.callback_query(F.data == 'bt3')
    async def process_button_2_press(callback: CallbackQuery):
        await callback.message.edit_text(text='Вы выбрали пункт 1.1', reply_markup=keyboards.keyboard2)
    
    @dp.callback_query(F.data == 'bt4')
    async def process_button_15_press(callback: CallbackQuery):
        await callback.message.edit_text(text='Вы выбрали пункт 1.2', parse_mode='html')
    
    @dp.callback_query(F.data == 'bt5')
    async def process_button_15_press(callback: CallbackQuery):
        await callback.message.edit_text(text='Вы вернулись в главное меню', reply_markup=keyboards.keyboard)
    
    if __name__ == '__main__':
        dp.run_polling(bot)


    файл keyboards:

    from aiogram.types import (InlineKeyboardButton, InlineKeyboardMarkup)
    
    bt1 = InlineKeyboardButton(text='Пункт 1', callback_data='bt1')
    bt2 = InlineKeyboardButton(text='Пункт 2', callback_data='bt2')
    keyboard = InlineKeyboardMarkup(inline_keyboard=[[bt1, bt2]])
    
    bt3 = InlineKeyboardButton(text='Пункт 1.1', callback_data='bt3')
    bt4 = InlineKeyboardButton(text='Пункт 1.2', callback_data='bt4')
    bt5 = InlineKeyboardButton(text='Назад', callback_data='bt5')
    keyboard1 = InlineKeyboardMarkup(inline_keyboard=[[bt3, bt4], [bt5]])
    
    bt6 = InlineKeyboardButton(text='Кнопка 1', callback_data='bt6')
    bt7 = InlineKeyboardButton(text='Кнопка 2', callback_data='bt7')
    bt8 = InlineKeyboardButton(text='Кнопка 3', callback_data='bt8')
    bt9 = InlineKeyboardButton(text='Кнопка 4', callback_data='bt9')
    bt10 = InlineKeyboardButton(text='Кнопка 5', callback_data='bt10')
    bt11 = InlineKeyboardButton(text='Кнопка 6', callback_data='bt11')
    bt12 = InlineKeyboardButton(text='Кнопка 7', callback_data='bt12')
    keyboard2 = InlineKeyboardMarkup(inline_keyboard=[[bt6, bt7, bt8], [bt9, bt10, bt11], [bt12]])


    т.е. при нажатии на кнопку Пункт 1 он выводит что в сообщении нет медиафайлов для редактирования.
    Если использовать message.answer_photo() вместо message.edit_media то изображение с кнопками выводится, но кнопки (Пункт 1.1 и Пункт 1.2) становятся не рабочими и говорят что в сообщении нет текста для редактирования.
    Написано
  • Как обойти ошибку сервера Telegram при использовании метода answer_photo?

    @kavermoki Автор вопроса
    Сергей П, спасибо за очень не понятный ответ. Пошёл читать докуменцию...

    Это не огрызки когда, и что в них не понятно. Там все логически прописано, зачем мне писать что я импортировал несколько Библиотек, методов и тп, ещё 98 инлайн кнопок, если я это все выложу сюда меня пошлют куда подальше. Я выложил именно проблему и попросил метод решения, за edit_media спасибо, но я подозреваю что это аналог, и можно все равно работать с edit_text
    Написано
  • Как обойти ошибку сервера Telegram при использовании метода answer_photo?

    @kavermoki Автор вопроса
    сделал все по документации :

    @dp.callback_query(F.data == 'bt21')
    async def process_button_15_press(callback: CallbackQuery):
        photo = FSInputFile('monitoring.jpg')
        await callback.message.edit_media(InputMediaPhoto(media=photo, caption='Текст'), reply_markup=keyboards.keyboard8)


    но получаю:
    Telegram server says - Bad Request: there is no media in the message to edit

    каким образом надо еще ему передать сообщение для редактирования, не могу сориентироваться что то...
    Написано
  • Как обойти ошибку сервера Telegram при использовании метода answer_photo?

    @kavermoki Автор вопроса
    Сергей П, к слову, он в результате выводит и изображение и подпись, но inline кнопки в клавиатуре reply_markup=keyboards.keyboard8 не работают и выводят ошибку Telegram server says - Bad Request: there is no text in the message to edit.

    Я это и пытался донести, что при использовании метода answer_photo с атрибутом reply_markup перестают работать inline, в противном случае (без фото) все работает с той же самой клавиатурой reply_markup=keyboards.keyboard8
    Написано
  • Как обойти ошибку сервера Telegram при использовании метода answer_photo?

    @kavermoki Автор вопроса
    Сергей П, Добавил spoiler к вопросу. Обстоятельства таковы, что при методе answer_photo есть ошибка. Т.е. я хочу передать фото, подпись к фото с помощью caption и естественно добавить reply_markup. Выходит ошибка указанная выше. Но если использовать метод edit_text без фото, просто текст, с той же самой клавиатурой reply_markup=keyboards.keyboard8 то ошибок нет.
    Написано
  • Как вызвать случайную asyn функцию в asyn функции?

    @kavermoki Автор вопроса
    Да, хотел как то быстро решить вопрос - виноват. Спасибо за ответ, вопрос решил без asyn.
    Написано
  • Как заблокировать сайты в локальной сети по белому списку?

    @kavermoki
    d-stream, не так понял вопрос автора сначала, Думал запретить к нескольким сайтам.... А так да, реализация белого списка абсолютна невозможна на hosts, извиняюсь.
    Написано
  • Как заблокировать сайты в локальной сети по белому списку?

    @kavermoki
    d-stream, ну как правило же разрешить все, кроме... все что в списке под 127.0.0.1 - будет запрещено, все остальное белый список.
    Написано