Задать вопрос
  • Как сделать коллизию между гранатой и полом в pygame?

    Fallervood
    @Fallervood
    Коллизия должна быть не между, а на полу и на гранате..
    Ответ написан
  • Поиск текста на фото?

    Fallervood
    @Fallervood
    Обратите внимание на библиотеку OpenCV
    Ответ написан
    Комментировать
  • Не работает Telegram бот на Python?

    Fallervood
    @Fallervood
    Обратите внимание на ошибку:

    AttributeError: 'TeleBot' object has no attribute 'send'

    В ней сказано, что объект 'TeleBot' не имеет атрибута (метода) 'send'.
    Соответственно ошибка в строчках, где вы пишите bot.send.msg

    Правильная запись:
    bot.send_message

    Учитесь читать ошибки! Удачной разработки!
    Ответ написан
    Комментировать
  • Python (aiogram): Как сделать несколько сменяющихся страниц inline-кнопок?

    Fallervood
    @Fallervood
    На aiogram не подскажу конкретного решения. Но как бы сделал я на примере pytelegrambotapi.
    Думаю структура будет понятна, и сможешь сделать на aiogram.

    Словарь хранящий в себе user_id : Страница на которой находиться
    user_page = dict
    Список inline кнопок
    buttons = list

    Для удобства, отдельная функция для клавиатуры, куда передаем user_id
    def inline_keyboard(user_id):
        markup = InlineKeyboardMarkup()
        # Достаем страницу. Будет идти с 0
        page = user_page[user_id]
        # Кол-во кнопок которые будем менять, по сути индекс. 
        step = 2
        for i in range(page, page+2):
            markup.add(buttons[i+]
        btn_next = InlineKeyboardButton(text='>', callback_data = 'next')
        btn_back = InlineKeyboardButton(text='<', callback_data = 'back')
        return markup


    Соответственно в обработке колбеков на next прибавляем к странице step, на back отнимаем.
    После, редактируем уже существующее сообщение.
    Пишем проверку, чтобы пользователь не мог выйти за рамки массива.

    Вызываем где нужно
    reply_markup = inline_keyboard(message.user_id)

    Должно быть все просто. Удачи!
    Ответ написан
    Комментировать
  • Как из google-sheets отправлять сообщение в Телеграм после обновления строки в таблице?

    Fallervood
    @Fallervood
    Вам нужно написать scheduled скрипт.
    Скрипт - который будет обновляться в определенное время.

    В принципе первый комментатор прав, это будет самый логичный вариант, без каких либо затрат. Не вижу проблемы хранить эту информацию, можно просто записывать массив из таблицы в txt файл и сравнивать его в определенные интервалы времени.

    Для этого можно использовать библиотеку, которая так и называется schedule.
    Документация.

    На запись такого скрипта уйдет 2 минуты, а Вы сохраните нервные клетки :)

    P. S. Отслеживайте трафик скрипта, не перегрузите сервер
    Ответ написан
    Комментировать
  • Pydroid: Телеграм бот отключается через 2 минуты, что можно сделать?

    Fallervood
    @Fallervood
    Хероку не дает бесперебойный хост, в прочем как и любой хостинг на бесплатной основе. Как правило, даже если какие-то ресурсы выделяются бесплатно - хостинг оставляет за собой право сбрасывать процессы, которые "нагружают" сервер и стоят на бесплатной основе.

    Лично я, в разработке ботов использую этот хостинг (ТЫК).
    Очень простой в использовании, намного легче деплоинг и отличный интрерфейс, на фоне Хероку

    Возможно проблема вообще не в хостинге, а в polling. Как правило, в конце скрипта бота должен быть обработчик бота, что-то вроде: bot.polling(None_stop=True)
    Информацию подробнее можно найти в официальной документации, в разделе getUpdates.

    Удачной разработки!
    Ответ написан
    Комментировать
  • Почему Телеграм бот при нажатии на кнопки выдаёт сообщение об ошибке?

    Fallervood
    @Fallervood
    В декораторе Вы указываете, что он будет срабатывать на любой текст поступающий боту. Текст Вы отправляете через кнопки. Кроме того, функция start под точно таким же декоратором.

    Следует заменить на :
    @bot.message_handler(commands=['start'])

    Указал, ничего не изменяя
    import telebot
    from telebot import types
    
    bot = telebot.TeleBot('ТУТ ТОКЕН')
    
    
    markup = types.ReplyKeyboardMarkup(resize_keyboard = True)
    butt1 = types.KeyboardButton('ЗАРАБОТАТЬ')
    butt2 = types.KeyboardButton('КАНАЛ')
    markup.add(butt1, butt2)
    
    markup2 = types.ReplyKeyboardMarkup(resize_keyboard = True)
    butt1 = types.KeyboardButton('Дальше')
    butt2 = types.KeyboardButton('Назад')
    markup2.add(butt1, butt2)
    
    @bot.message_handler(content_types = ['text']) # Здесь вы указываете декоратор
    def welcome(message):
        bot.send_message(message.chat.id, 'Привет епта ', reply_markup = markup)
    
    @bot.message_handler(content_types= ['text']) # Здесь заменить
    def start(message):
        bot.send_message(message.chat.id, 'Ага', reply_markup = markup)
        if message.text == 'ЗАРАБОТАТЬ':
            bot.send_message(message.chat.id, 'Что-бы заработать подними жопу', reply_markup = markup2)
        elif message.text =='КАНАЛ':
            bot.send_message(message.chat.id, 'Это наш канал', reply_markup = markup2)
    
    def lala(message):
        if message.text == 'Дальше':
            bot.send_message(message.chat.id, 'Ага ага')
        elif message.text == 'Назад':
            bot.send_message(message.chat.id, 'Вы вернулись', reply_markup = markup)
    
    bot.polling(none_stop = True)
    Ответ написан
    Комментировать
  • Python telegram Bot - keyboard?

    Fallervood
    @Fallervood
    Функция, которая содержит клавиатуру, должна возвращать markup, а так же не надо передавать аргумент сообщения
    def reply ():
    markup = types.ReplyKeyboardMarkup (resize_keyboard = True)
    button_1 = types.KeyboardButton ('ZAPOMNI')
    button_2 = types.KeyboardButton ('NAPOMNI')
    button_3 = types.KeyboardButton ('IZMENI')
    
    markup.add (button_1, button_2, button_3)
    return markup
    Ответ написан
    Комментировать
  • Как скопировать выделенный текст в tkinter?

    Fallervood
    @Fallervood
    Попробуй посмотреть вот здесь, там есть вариант с Tkinter
    Ответ написан
    1 комментарий
  • Как я могу поместить компонент игрового объекта в переменную?

    Fallervood
    @Fallervood
    Это сработает если данный скрипт будет висеть на объекте вместе с RigidBody2D
    public class PingPong : MonoBehaviour
    {
        public Transform ball;
        Rigidbody2D ballRb; // Объявляем переменную ballRb с типом RigidBody2D, на этом этапе, она пустая
    
        void Start()
        {
            // Присвоение переменной локального (который висит вместе со скриптом) RigidBody2D
            ballRb = GetComponent<Rigidbody2D>(); 
        }
    }


    Если же Вам нужно взять его отдельно из объекта ball

    public class PingPong : MonoBehaviour
    {
        public GameObject ball; //  Переменная должна быть игровым объектом
        Rigidbody2D ballRb; // Объявляем переменную ballRb с типом RigidBody2D, на этом этапе, она пустая
    
        void Start()
        {
            // Присвоение переменной от объекта ball RigidBody2D
            ballRb = ball.GetComponent<Rigidbody2D>(); 
        }
    }
    Ответ написан
    Комментировать
  • Как вызвать функцию, которая находится внутри другой функции?

    Fallervood
    @Fallervood
    Если Вы хотите вызвать функцию из какого либо "кейса", то Вам необходимо создать класс. Если Вы новичок, побольше почитайте про ООП. Вот пример кода, где Ваш метод (функция) вызывается из класса.
    class SimpleClass:
      def SimpleMethod():
        print('Я метод "SimpleMethod" в классе "SimpleClass"')
    
    def SimpleFunction():
        SimpleClass.SimpleMethod()
    
    SimpleFunction()
    Ответ написан
    Комментировать
  • Как называется метод, который определяет ЗАжатие на объект?

    Fallervood
    @Fallervood
    Можно попробовать отслеживать положение мышки и сделать таймер. Если к примеру 2 секунды мышка не меняет своего место положения или недостаточно много меняет от предыдущей точки, то объект падает. Попробуй такую логику
    Ответ написан
    3 комментария
  • Как сравнить два значения?

    Fallervood
    @Fallervood
    К примеру можно сделать следующее:
    s = ['100000','103213',"123451","1242166"]
    
    for x in range(0,2):
       if s[x] != s[x+2]:
          print(s[x], "не равняется", s[x+2])
       else:
          print(s[x], "равно", s[x+2])

    Вывод:
    100000 не равняется 123451
    103213 не равняется 1242166

    Надеюсь помог.
    Ответ написан