Перейти к содержимому

Простой Telegram бот на Python (ScreenShoter)

Решенные Гайды
3 3 592 1
  • Здравствуйте! Сегодня я хочу поделиться с вами опытом создания простого Telegram-бота на языке Python. В качестве примера я возьму бота, который делает скриншоты по заданному времени.

    Используемые версии:
    Версия Aiogram: 3.17.0
    Версия Python: 3.11.7

    Создание бота в телеграмм:

    • Заходим в телеграмм и ищем там @BotFather
    • Как нашли, пишем /newbot
      Он попросит написать имя для бота, пишем свое название бота
      Бот
      Затем он попросит ввести username бота, пишем, ОБЯЗАТЕЛЬНО В КОНЦЕ ДОБАВИТЬ _bot
    • После того как мы это сделали, он нам даст токен, его нам нужно сохранить, мы его позже используем
      Токен
    • Так же нужно перейти в нашего бота и написать любое сообщение

    Установка Python и создание бота:

    • Для начала надо установить сам Python с этого сайта (я буду использовать версию 3.11, т.к она мне привычнее, но вы можете использовать последнюю)
    • После установки нам нужно установить IDE, на выбор есть несколько: VSCode, Sublime, Notepad++, я буду использовать VSCode, так как он удобен в плане подсветки синтаксиса и удобных расширений, Notepad++ совершенно не советую использовать, т.к он максимально неудобен, а так можете хоть в обычном блокноте писать код
    • Теперь нужно установить зависимости, для этого надо открыть командную строку WIndows и написать там pip install aiogram pyautogui
    • После установки IDE, нам нужно создать папку в которой мы будем работать
    • Как создали папку, надо создать папку handlers и файл main.py (не в handlers)

    Так выглядит наша рабочая директория:
    Так выглядит наша рабочая директория

    Заходим в файл main.py
    И пишем там наш код:

    # Импортируем библиотеки
    
    import asyncio
    import logging
    
    from aiogram import Bot, Dispatcher, types
    from aiogram.filters import Command
    from aiogram.enums.parse_mode import ParseMode
    from aiogram.fsm.storage.memory import MemoryStorage
    from aiogram.client.bot import DefaultBotProperties
    from aiogram.types.input_file import FSInputFile
    import asyncio
    import pyautogui
    import os
    token = "ВАШ ТОКЕН" # Токен бота который мы берем с t.me/botfather
    
    my_id = 35ВАШ_АЙДИ # ID Кому будут отправляться сообщения, получить его можно в t.me/username_to_id_bot
    time_to_screen = 120 # (в секундах) Каждые 2 минуты отправлять скриншот
    
    bot = Bot(token=token, default=DefaultBotProperties(parse_mode=ParseMode.HTML)) 
    dp = Dispatcher(storage=MemoryStorage())
    
    def make_screen(filename):
        '''
        Функция создания скриншота
        '''
        pyautogui.screenshot(filename)
        return filename
    
    async def send_screenshot():
        '''
        Функция отправки скриншота каждые N секунд (задается time_to_screen)
        '''
        while True: # Бесконечный цикл
            filename = make_screen("screenshottime.png") # Делаем скриншот с аргументом названия файла (получившегося скриншота)
            await bot.send_photo(my_id, filename) # Функция отправки скриншота 
            await asyncio.sleep(time_to_screen) # Спим N секунд (задается time_to_screen)
    
    @dp.message(Command('screen')) # Инициализируем команду /screen
    async def screenshot(message: types.Message):
        '''
        Функция скриншота после комманды
        '''
        if message.from_user.id == my_id: # Проверяем, мы ли написали сообщение
            filename = make_screen("screenshotcmd.png") # Делаем скриншот с аргументом названия файла (получившегося скриншота)
            if os.path.exists(filename): # Проверяем, сделался ли скриншот
                await message.answer_photo(FSInputFile(filename)) # Если файл скриншота существует, отправляем его
            else:
                await message.reply("Произошла ошибка при скриншоте") # Если не существует, то отправляем соответствующее сообщение
    
    async def main():
        await bot.delete_webhook(drop_pending_updates=True)
        asyncio.create_task(send_screenshot())
    
        await dp.start_polling(bot, allowed_updates=dp.resolve_used_update_types())
        
    
    if __name__ == "__main__":
        logging.basicConfig(level=logging.INFO)
        asyncio.run(main())
    

    Заполняем свои данные в token и my_id

    • Запускаем код, для этого нужно перейти в папку с нашим скриптом, открыть там Командную строку, что бы это сделать, надо нажать правую кнопку мыши по свободному пространству в папке и нажать “Открыть в терминале” или “Открыть в командной строке”
      Открыть в терминале

    • Затем прописать там py main.py, мы увидим что бот запустился
      Запустился бот
      Так же нам в лс придет скриншот нашего экрана
      Скриншот от бота

    • Надо проверить команду /screen
      Пишем в бота /screen
      /screen
      И как видим всё работает!

    Данный гайд создан для ознакомления с языком Python и библиотекой aiogram

    Если у вас возникли вопросы, можете написать либо в комментарии, либо в лс форума, либо по контактам:
    TG: https://t.me/mongoliatupo
    Discord: _monterat (отвечаю не всегда)

    Пишу на форуме впервые, поэтому не судите строго, лучше посоветуйте что нибудь)

  • нормально

  • Интересный, подробный гайд. +rep за подробное описание что и как делать💯

  • нормально

  • andrey_p1mplA andrey_p1mpl выбрал решение
  • andrey_p1mplA andrey_p1mpl закрывает тему
  • andrey_p1mplA andrey_p1mpl открыл эту тему в

Похожие темы

  • жалоба на админа

    Закрыта Перенесена Решенные Решенные жалобы одобрено
    7
    2 Лайки
    7 Сообщений
    521 Показы
    NocturnTheSkyN
    ОТВЕТ АДМИНИСТРАЦИИ ㅤ Привет, @червяк-джим ! ㅤ p.s Извиняюсь за долгий ответ Ознакомившись с твоей жалобой, обсудив некоторые моменты в самой жалобе с одним из менеджеров проекта а также со старшей ролевой редакцией, сверив логи, я готов сказать следующее: Стажер команды администрации разбирая твою жалобу на офицера полиции, в конечном итоге вместе с другим администратором который пришел под конец жалобы, сошлись на мнении, что иметь при себе отмычки - не легально согласно законам города. В данной ситуации они не правы, т.к в законе нигде не указано, что иметь при себе инструменты взлома - не легально. Как и трактуется в законах города, лишь при наличии доказательной базы, следственной связи, что ты намеревался использовать инструмент взлома в виде отмычек с целью взлома или проникновения в сторону чужой собственности, лишь данном случае это было бы нарушением пункта о взломах и проникновениях. Кодекс об общих правонарушениях → Глава III. → Преступления против частной собственности → 3.4. Взлом и проникновение Spoiler [image: z42Tzsr.png] Теперь коснемся темы, связанной с обоснованным и не обоснованным проведение экспертизы на следы использования инструментов взлома в виде отмычек. Ты был задержан офицером полиции за нарушение общественного порядка, в ходе первичного обыска у тебя нашли отмычки, после всего этого офицер решил провести экспертизу на следы использования найденных у тебя отмычек. В данном случае проведения экспертизы является не обоснованным действием, т.к нету доказательной базы, следственной связи, что ты мог использовать эти отмычки для взлома или проникновения в сторону чужой собственности. Ниже приведу ситуации, при которых проведения экспертизы будет являться обоснованным действием: Пример 1 : Ты оказался на территории чужой собственности, имея при себе инструменты взлома, это уже является доказательной базой на проведение экспертизы на следы использования инструментов взлома. Пример 2 : Ты ранее привлекался за пункты связанные с покушением на чужую собственность, не законно находился на ней, либо же был осужден за кражу имущества и т.п и вновь был задержан за нарушение законов города, в случае если полиция установит этот факт и при тебе обнаружат инструменты взлома, это может послужить поводом для проведения экспертизы на следы использования инструментов взлома. Пример 3 : Ты производишь услуги населению в виде взлома замков, у тебя есть инструмент взлома в виде отмычек, однако нету лицензии на оказание услуг, в случае твоего задержания это также будет доказательной базой для проведения экспертизы на следы использования инструментами взлома. Насчет инструмента взлома в виде предмета “взломщик”. В законах города не трактуется ничего о его запрете, все что было сказано про отмычки можно и отнести ко взломщику, мол пока не доказано что он использовался с целью взлома или проникновения на чужую собственность, иметь его при себе легально. Однако стоит учитывать один момент в IC, что данный предмет по сути сделан на коленке токарем, и является неизвестным устройством неизвестного происхождения который официально не зарегистрирован, поэтому иметь его при себе автоматически не легально. (P.s команде ролевой редакции уже уведомлено об отсутствии пункта, связанным с устройствами предназначенных для взлома электронных замков/устройств. В скором будущем это будет добавлено в законы города). Подводя итог, я готов сказать следующее: С администраторами будет проведена беседа касательно данной ситуации чтобы это более не повторилось ВЕРДИКТ: ОДОБРЕНО ㅤ Нарушения со стороны участников команды администрации выявлены Администраторы оказались не правы в данной ситуации, проведение экспертизы на следы использования инструментов взлома в виде отмычек со стороны полиции являлось не обоснованным действием в случае топикстартера. P.s Также есть момент связанный с тем, что на предмете отмычки в описании указано, что иметь их при себе - не легально. Когда-то давно на сервере этот предмет являлся не легальным, однако сейчас иметь их при себе - легально. Команде разработки будет направлена задача на изменение описания у данного предмета, чтобы не сбивать с толку игроков сервера. В случае если какие-то игроки, будут утверждать, что отмычки являются не легальными, просто отправьте им ссылку на эту тему, т.к я на личном опыте наблюдаю тенденцию, что когда заходит речь про отмычки, множество игроков считают, что автоматически иметь их при себе - не легально, опять же таки, скорее всего это связанно с отсутствием ознакомления с законами города и описанием самого предмета отмычки. Вынес вердикт: Ответственный администратор с одобрения старшей администрации
  • Пушечные сничи

    Закрыта Перенесена Решенные Решенные заявки одобрено
    3
    2 Лайки
    3 Сообщений
    107 Показы
    TekoyT
    Не могу быть полностью уверен в том, что ты невиновен (нет ни демок, ничего). Однако сниму блокировку и выставлю запрет на игру за криминал (механом). Брать оружия в руки ты не сможешь ближайшие 7 дней, а играть криминал по РП через отыгровки, содействиям и т.д. - можешь. Проанализировав твою карму, могу сделать вывод о том, что ты занимаешься криминалом регулярно. Смени род деятельности на неделю. Одобрено.
  • Токсичность

    Закрыта Перенесена Решенные Решенные жалобы одобрено
    3
    0 Лайки
    3 Сообщений
    193 Показы
    This is ГаериннT
    Привет! Ознакомился со скриншотом и понял, что действительно у игрока имеется ChatAbuse, нарушителю будет выдан WL сроком на месяц.
  • FK

    Закрыта Перенесена Решенные Решенные жалобы одобрено
    2
    0 Лайки
    2 Сообщений
    129 Показы
    5555
    посмотрев по логам и имеющиеся доказательства, готов вынести вердикт. в данном случае - нельзя было добивать подозреваемого, прошло 4 секунды с момента падения преступника в стадию и нужно было прекратить стрельбу. игроку будет выдан вотчлист за фк.
  • обходчик все ганы забрал, неприкольно

    Закрыта Перенесена Решенные Решенные заявки одобрено
    2
    2 Лайки
    2 Сообщений
    76 Показы
    D0n Bar0nD
    Закинул в хранилище!