• Ошибка User not found в aiogram. Как исправить?

    @bitkoljas
    Попробуй использовать именно ID чата. Он имеет числовой формат. Получить свой идентификатор можно например с помощью бота: https://t.me/myidbot
    Ответ написан
    Комментировать
  • Как запустить несколько копий телеграм-бота на Aiogram?

    @bitkoljas Автор вопроса
    В общем придумал вот такое решение:
    import requests, time, io, os
    import logging
    
    from threading import Thread
    
    __connect_key__ = 'token'
    __admin_id__ = 00000000
    __delay_update__ = 0.1
    
    logging.basicConfig(filename="Logging.log", level=logging.INFO)
    
    def __telegram_console__():
        try:
    
            def __out_messages__(id = 0, mode = 'write'):
                try:
                    if mode == 'write':
                        with io.open('__out_messages__', 'w') as __messages_id__:
                            __messages_id__.write(str(id))
                            return id
                    else:
                        with io.open('__out_messages__', 'r') as __messages_id__:
                            return int(__messages_id__.read())
                except Exception as Error:
                    if 'No such file or directory: \'__out_messages__\'' in str(Error):
                        with io.open('__out_messages__', 'w') as __messages_id__:
                            __messages_id__.write('0')
                            return 0
                    logging.exception('__out_messages__')
    
            __messages_id__ = __out_messages__(mode = 'read')
    
            while True:
                time.sleep(__delay_update__)
                for Messages in requests.post(f"https://api.telegram.org/bot{__connect_key__}/getUpdates").json()['result']:
                    if 'message' in Messages.keys():
                        if Messages['message']['message_id'] > __messages_id__:
                            __messages_id__ = __out_messages__(Messages['message']['message_id'])
                            if __admin_id__ == Messages['message']['from']['id']:
                                Hendler(Messages['message']['text'].split(' '))
                        elif 'edited_message' in Messages.keys():
                            __messages_id__ = __out_messages__(Messages['edited_message']['message_id'])
                            if __admin_id__ == Messages['edited_message']['from']['id']:
                                Hendler(Messages['edited_message']['text'].split(' '))
    
        except Exception as Error:
            logging.exception('__telegram_console__')
            __telegram_console__()
    
    def Hendler(Command):
        pass
    
    if __name__ == '__main__':
        Thread(target=__telegram_console__).start()
        os.system('pause')
    Ответ написан
    Комментировать
  • Не могу передать аргумент функции, в чем моя ошибка?

    @bitkoljas
    def print_top5_by_column(data, column, reverse) - требует 3 аргумента, вы высылаете 1: print_top5_by_column(filtered_data)

    Скопируйте лог ошибки, что бы было понятнее

    *Редактирую*
    Разобрал код, нашёл ошибку
    Код должен выглядеть следующим образом
    oscar_data = [
    ['Форма воды', 2017, 6.914, 123, ['фантастика', 'драма'], 19.4, 195.243464],
    ['Лунный свет', 2016, 6.151, 110, ['драма'], 1.5, 65.046687],
    ['В центре внимания', 2015, 7.489, 129, ['драма', 'криминал', 'история'], 20.0, 88.346473],
    ['Бёрдмэн', 2014, 7.604, 119, ['драма', 'комедия'], 18.0, 103.215094],
    ['12 лет рабства', 2013, 7.71, 133, ['драма', 'биография', 'история'], 20.0, 178.371993],
    ['Операция "Арго"', 2012, 7.517, 120, ['триллер', 'драма', 'биография'], 44.5, 232.324128],
    ['Артист', 2011, 7.942, 96, ['драма', 'мелодрама', 'комедия'], 15.0, 133.432856],
    ['Король говорит!', 2010, 7.977, 118, ['драма', 'биография', 'история'], 15.0, 414.211549],
    ['Повелитель бури', 2008, 7.298, 126, ['триллер', 'драма', 'военный', 'история'], 15.0, 49.230772],
    ['Миллионер из трущоб', 2008, 7.724, 120, ['драма', 'мелодрама'], 15.0, 377.910544],
    ['Старикам тут не место', 2007, 7.726, 122, ['триллер', 'драма', 'криминал'], 25.0, 171.627166],
    ['Отступники', 2006, 8.456, 151, ['триллер', 'драма', 'криминал'], 90.0, 289.847354],
    ['Столкновение', 2004, 7.896, 108, ['триллер', 'драма', 'криминал'], 6.5, 98.410061],
    ['Малышка на миллион', 2004, 8.075, 132, ['драма', 'спорт'], 30.0, 216.763646],
    ['Властелин колец: Возвращение Короля', 2003, 8.617, 201, ['фэнтези', 'драма', 'приключения'], 94.0, 1119.110941],
    ['Чикаго', 2002, 7.669, 113, ['мюзикл', 'комедия', 'криминал'], 45.0, 306.776732],
    ['Игры разума', 2001, 8.557, 135, ['драма', 'биография', 'мелодрама'], 58.0, 313.542341],
    ['Гладиатор', 2000, 8.585, 155, ['боевик', 'драма', 'приключения'], 103.0, 457.640427],
    ['Красота по-американски', 1999, 7.965, 122, ['драма'], 15.0, 356.296601],
    ['Влюбленный Шекспир', 1998, 7.452, 123, ['драма', 'мелодрама', 'комедия', 'история'], 25.0, 289.317794],
    ['Титаник', 1997, 8.369, 194, ['драма', 'мелодрама'], 200.0, 2185.372302],
    ['Английский пациент', 1996, 7.849, 155, ['драма', 'мелодрама', 'военный'], 27.0, 231.976425],
    ['Храброе сердце', 1995, 8.283, 178, ['драма', 'военный', 'биография', 'история'], 72.0, 210.409945],
    ['Форрест Гамп', 1994, 8.915, 142, ['драма', 'мелодрама'], 55.0, 677.386686],
    ['Список Шиндлера', 1993, 8.819, 195, ['драма', 'биография', 'история'], 22.0, 321.265768],
    ['Непрощенный', 1992, 7.858, 131, ['драма', 'вестерн'], 14.4, 159.157447],
    ['Молчание ягнят', 1990, 8.335, 114, ['триллер', 'криминал', 'детектив', 'драма', 'ужасы'], 19.0, 272.742922],
    ['Танцующий с волками', 1990, 8.112, 181, ['драма', 'приключения', 'вестерн'], 22.0, 424.208848],
    ['Шофёр мисс Дэйзи', 1989, 7.645, 99, ['драма'], 7.5, 145.793296],
    ['Человек дождя', 1988, 8.25, 133, ['драма'], 25.0, 354.825435],
    ]
    
    def filter_after(data, year_threshold):
            result = []
            for row in data:
                    year = row[1]
                    if year >= year_threshold:
                            result.append(row)
            return result
    
    def print_top5_by_column(data, column=0, reverse=0):
            data.sort(key=lambda row: row[column], reverse=reverse)
            print('Название | Год | Рейтинг | Длина | Бюджет | Сборы |')
            print('--------------------------------------------------------------------------------')
            for row in data[:5]:
                    print('{: <35} | {} | {: >7.2f} | {: >5} | {: >6.1f} | {: >6.1f} |'.format(row[0], row[1], row[2], row[3], row[5], row[6]))
    
    filtered_data = filter_after(oscar_data, 2000)
    print_top5_by_column(filtered_data)
    Ответ написан
  • Можно ли сделать что бы при нажатии кнопки в ВК вызывалась функция?

    @bitkoljas
    Если я не ошибаюсь, то кнопка в вк не может вызывать функцию, она лишь отправляет смс с текстом что прописан в ней, это сделано для ускорения работы
    А функцию уже можно выполнить когда считаете текст смс и сопоставите с функцией

    Например: У вас в чате есть кнопка с текстом TextText, когда вы её нажимаете, то в чат отправится текст: TestText, затем бот получает текст отправленного смс и через условие, вызовет функцию

    def Test():
        print("Вы нажали кнопку: TestText")
    if body == "TestText":
        Test()
    #body - переменная где хранится текст считаной из чата смс


    Если я в чём то ошибаюсь, поправьте меня
    Ответ написан
    Комментировать
  • Проблемы с кодом в автозагрузке?

    @bitkoljas
    Путь к текстовому файлу указываешь полный и при чтении и при записи, и проблема пропадёт
    Впредь пожалуйста как можно точнее формулируйте вопрос, скорость получения ответа на него значительно возрастёт, не будете терять время впустую
    Потому что если долго не получается найти ответ, многие теряют интерес к написанию программы
    Ответ написан
    Комментировать
  • Полный путь в переменной при компиляции pyinstaller?

    @bitkoljas
    По сути, без дополнительных флагов, файл сохраняется по пути запуска консоли с PyInstaller. в папке dist
    Сделал скрипт на скорую руку, внутри всё весьма понятно, всё в отдельных переменных, думаю разберёшься

    Надеюсь я правильно понял, и хоть как то помог
    import subprocess, os
    
    path_py = input("Path to file.py: ")
    mode = input("Hide the console window?(y/n): ")
    path_ico = input("Path to icon: ")
    
    if mode == "y":
    	mode = "-w "
    else:
    	mode = ""
    
    if not path_ico == "":
    	path_ico = "-i " + path_ico + " "
    
    name = os.path.splitext(os.path.basename(path_py))
    path_exe = os.path.abspath(os.curdir) + '\\dist\\' + name[0] + '.exe'
    
    command = "pyinstaller -F " + mode + path_ico + path_py
    
    print("\nCommand: ", command, "\n")
    
    log_concole = subprocess.getoutput(command)
    
    print("***********************************\n", log_concole, "\n***********************************\n\n", "Path to exe: ", path_exe)
    Ответ написан
    1 комментарий