Как сохранить файл в repl it

Обновлено: 02.07.2024

Узнайте, как создать своего собственного бота Discord с помощью Python и Reply.it. Мы пройдем все шаги, необходимые для настройки вашего бота на Discord, а затем закодируем его с помощью Python, все в облаке.

Примечание: этот учебник представляет собой отрывок из Код с Reply.it: Проекты на Python для начинающих , книга и набор учебных пособий для начинающих, чтобы получить практический опыт программирования на Python.

Если вы предпочитаете JavaScript, вы можете найти перевод этого руководства с использованием NodeJS вместо Python.

Вам будет легче следить за этим, если у вас есть некоторые знания Python и вы уже использовали Discord или подобное приложение, такое как Skype или Telegram. Мы не будем рассматривать самые основы Python, но мы подробно объясним каждую строку кода, поэтому, если у вас есть какой-либо опыт программирования, вы должны быть в состоянии следовать этому.

Обзор и требования

Мы будем делать все наше кодирование через Repl.it веб-IDE и хостинг нашего бота с Repl.it кроме того, вам не нужно будет устанавливать какое-либо дополнительное программное обеспечение на свой компьютер. Для этого урока вам нужно будет создать учетную запись Discord (если она у вас уже есть, вы можете пропустить это). Инструкции о том, как это сделать, приведены в следующем разделе.

В этом уроке мы рассмотрим:

  • Создание приложения и пользователя бота в вашей учетной записи Discord
  • Создание сервера на Discord
  • Добавление нашего бота на наш сервер Discord

Давайте сначала пройдем через эти шаги администратора, а затем перейдем к самой интересной части кодирования нашего бота.

Создание бота в Discord и получение токена

Вы можете зарегистрироваться на бесплатную учетную запись на странице регистрации Discord и загрузить одно из своих настольных или мобильных приложений с домашней страницы Discord . Вы также можете использовать Discord в браузере.

Обратите внимание на свой токен или скопируйте его в буфер обмена, так как в ближайшее время нам нужно будет добавить его в наш код.

Создание сервера Раздора

Добавление бота Discord на сервер Discord

Создайте URL-адрес, который выглядит следующим образом, но в конце используйте свой идентификатор клиента вместо моего:

Создайте URL-адрес, который выглядит следующим образом, но в конце используйте свой идентификатор клиента вместо моего:

Перейдите по URL-адресу, созданному в вашем веб-браузере, и вы увидите страницу, похожую на следующую, где вы можете выбрать, на какой сервер добавить своего бота.

Теперь мы можем перейти к самой веселой части создания мозга для нашего бота!

Создание Repl и установка наших зависимостей Discord

Наш бот почти готов к работе, но нам все еще нужно подключить ваш секретный токен. Это позволит вашему коду управлять нашим ботом.

Настройка авторизации для нашего бота

По умолчанию, Repl.it код является общедоступным. Это здорово, поскольку это поощряет сотрудничество и обучение, но мы должны быть осторожны, чтобы не делиться нашим секретным токеном бота (который дает любому, кто имеет к нему доступ, полный контроль над нашим ботом).

Чтобы обойти проблему необходимости предоставления нашему коду доступа к токену, позволяя другим получить доступ к нашему коду, но не нашему токену, мы будем использовать переменные среды . На обычной машине мы бы установили их непосредственно в нашей операционной системе, но с помощью Repl.it у нас нет к этому доступа. Reply.it позволяет нам устанавливать секретные переменные среды через специальный файл .env .

Откройте этот новый файл и добавьте переменную для определения секретного токена вашего бота (обратите внимание, что это второй токен, который мы получили при настройке бота-отличается от идентификатора клиента, который мы использовали для добавления нашего бота на наш сервер). Это должно выглядеть примерно так:

Вам нужно будет:

  • Замените токен (после знака = ) на токен, который Discord дал вам при создании собственного бота.
  • Будьте осторожны с интервалом . В отличие от Python, если вы поставите пробел по обе стороны от = в файле .env , эти пробелы будут частью имени переменной или значения, поэтому убедитесь, что у вас нет пробелов вокруг = или в конце строки.
  • Запустите код еще раз. Иногда вам нужно обновить всю страницу, чтобы убедиться, что переменные среды успешно загружены.

Давайте создадим бота Discord, который повторяет все, что мы говорим, но в обратном порядке. Мы можем сделать это всего за несколько строк кода. В вашем main.py файл, добавьте следующее:

Давайте разорвем это на части строка за строкой, чтобы посмотреть, что он делает.

Последние две строки получают наш секретный токен из переменных среды, которые мы настроили ранее, а затем сообщают вашему боту о запуске.

Откройте Discord и на сервере, который мы создали ранее, выберите приложение ReplBotApplication на панели в правой части экрана.

Бот отвечает каждый раз, меняя текст, который мы вводим.

Поддержание жизни нашего бота

Reply.it ваш код будет работать после закрытия вкладки браузера только в том случае, если вы используете веб-сервер. Потому что мы используем Python discord.py библиотека, наш бот не требует явного веб-сервера, но мы можем создать сервер и запустить его в отдельном потоке, просто чтобы сохранить наш Репл живым. Мы сделаем это с помощью фреймворка Flask .

Создайте новый файл в своем проекте под названием keep_alive.py и добавьте следующий код:

В нашем main.py файл, нам нужно добавить импорт для этого сервера в верхней части. Добавьте следующую строку в верхней части main.py .

Теперь ваш бот будет оставаться живым даже после закрытия браузера или выключения машины разработки. Repl все равно очистит ваш сервер и убьет вашего бота примерно через час бездействия, поэтому, если вы некоторое время не используете своего бота, вам придется войти в Repl и снова запустить бота. Кроме того, вы можете настроить сторонний (бесплатный!) сервис, например Uptime Robot . Робот Uptime пингует ваш сайт каждые 5 минут, чтобы убедиться, что он все еще работает-обычно, чтобы уведомить вас о неожиданном времени простоя, но в этом случае постоянные пинги имеют побочный эффект сохранения нашего Репла, поскольку он никогда не будет работать больше часа без какой-либо активности.

Разветвление и расширение нашего базового бота

Это не очень полезное и то, и другое, но сейчас возможности ограничены только вашим творчеством! Вы можете заставить своего бота получать ввод от пользователя, обрабатывать ввод и отвечать любым выбранным вами способом. На самом деле, с базовым вводом и выводом, которые мы продемонстрировали, у нас есть большинство компонентов любого современного компьютера, все из которых основаны на архитектуре фон Неймана (мы могли бы легко добавить недостающую память, если бы наш бот записал в файл или с немного большим усилием связался с базой данных SQLite для постоянного хранения).

Если вы застряли в поисках идей, почему бы не связать свой дискорд с API Twitch , чтобы получать уведомления, когда ваши любимые стримеры находятся в Сети, или создать текстовое приключение .

В следующем уроке мы снова построим точно такую же лодку , но с использованием NodeJS вместо Python. Даже если вы предпочитаете Python, часто бывает хорошей идеей создать один и тот же проект на двух языках, чтобы вы могли лучше оценить различия и сходства.

Как программировать онлайн на Питоне в repl.it?

Для программирования на каком-либо языке программирования требуется среда, в которой вы будете писать коды программ и проверять их выполнение. В большинстве случаев необходимо приобретать платную программу большого размера и устанавливать её на определенную поддерживаемую операционную систему.

В случае Питона как я уже говорил, может быть несколько вариантов. Один из них предполагает, что вы не станете ничего устанавливать, а всего лишь загрузите в интернет-браузере определенный сайт. Одним из таких сайтов, который поддерживает Питон, транслирует его код и сразу выполняет программу, является интернет-проект repl.it.

Рассмотрим основные возможности этого сайта, который поможет вам написать, не покидая окна браузера свою первую программу на Питоне.

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

Для регистрации жмём кнопку



Для регистрации жмём красную кнопку

Для того, что пройти регистрацию на repl.it как учитель необходимо перейти немного вниз по странице и нажать красную кнопку [Sign up Now!]


Щёлкаем по ссылке Sign up для регистрации


Окно для работы с Питоном

Для ученика нужно сразу вверху нажать на [Sign in], а затем сразу по центру щелкнуть ссылку Sign up.

В этом окне вы заполняете основные данные о себе - электронную почту и логин с паролем.

Особенности работы с сессиями и файлами

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

Новая вкладка имеет название file1.py



Новая вкладка имеет название file1.py

Нажимая специальную иконку слева с плюсиком вы создаете новый файл. Однако выполняться код программы будет всегда в основном файле под названием main.py, последующие файлы на закладках именуются как file1.py и т.д.

Щелчок по трем точкам вызывает меню



Щелчок по трем точкам вызывает меню

Нажав три точки на ярлыке с названием можно выбрать либо удалить этот файл, либо задать ему новое ещё не занятое имя.

Сохранение сессии

Чтобы сохранить все созданные вами файлы и код, следует нажать кнопку [Save] или нажать комбинацию клавиш Ctrl+S.

Не забываем про сохранение сессии



Не забываем про сохранение сессии

Создание новой сессии

Можно создать новую сессию для того, чтобы начать, к примеру, новый проект или программу. Для этого, нажмите иконку шестеренки и выберете слева появившийся пункт [New session]

Шестерёнка вызвает настройки и новую область



Шестерёнка вызвает настройки и новую область для создания сессии

Публикация Сессии

Сессию можно опубликовать для всех, чтобы другие могли ознакомиться с вашим кодом.

Эта кнопка запускает программу в работу



Эта кнопка запускает программу в работу

Запуск программы на исполнение

Написать программу - одно дело. Запустить на исполнение - другое! Чтобы запустить программу в этой среде как вы уже поняли нужно нажать вверху кнопку [Run] или нажав комбинацию клавиш -

А вот и уже существующие сессиии!



А вот и уже существующие сессиии!

в верхнем поле ввода отображается название Untitled. Чтобы задать своё имя для названия сессии просто щелкните по названию и введите символы с клавиатуры.

Изменяем название сессии на что-то своё



Изменяем название сессии на что-то своё

Все сохраненные сессии вы сможете посмотреть в вашем аккаунте через это подменю, выбрав пункт Sessions. Как видите, у меня их целый список.






Вызов дополнительных библиотек

Чтобы создать более-менее серьезную программу необходимо пользоваться специальными наборами готовых кодов - библиотеками. Такие библиотеки можно подключить и в интернет-сервисе repl.it.

Вызываем дополнительные библиотеки



Вызываем дополнительные библиотеки

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

а это пошаговая трассировка программы (Режим выявления ошибок)



а это пошаговая трассировка программы (Режим выявления ошибок)

Хорошо, когда на компьютере уже установлен Python. А еще здорово когда стоит ваш любимый текстовый редактор или даже IDE, и все настройки привычны, и всё лежит на своих местах. Тогда ничто не будет отвлекать вас от программирования, просто пишите код и получайте удовольствие. Красота!

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

Что у вас получится

Обычно в туториалах показывают как вывести на экран Hello World . Это дань традиции, но это скучно и не интересно. Давайте сделаем что-то особенное — запустим код, который показывает ASCII-фильм “Звёздные войны” с помощью Python. В конце туториала у вас получится вот это:

1. Зарегистрируйтесь на сайте Repl.it

Repl.it — это веб-сервис, где можно писать и запускать код прямо в браузере, ничего не устанавливая к себе на компьютер. Сервис умеет работать с Python, JavaScript, HTML, CSS, полный список технологий огромен. На сайте вы найдёте больше 50 вариантов — взгляните сами!

А можно и сократить путь. Для этого нужно войти в аккаунт Google , GitHub или FaceBook . Вот как раз ниже и показан пример, где пользователь заходит на сайт через аккаунт Google:

2. Проверьте, узнал ли вас сайт

Проверьте, что в меню слева отображается ваше @ИмяПользователя .

Если вы уже регистрировались ранее, то обязательно проверьте, узнал ли вас сайт. Очень часто люди пишут код, а потом теряют его из-за того, что забыли авторизоваться. Заметить это сразу сложно, а на следующий день код просто “исчезает” из личного кабинета. Всегда начинайте работу с вопроса:

А я авторизован?

Вот как узнать, что вы авторизованы:

3. Создайте repl

Каждый проект программисты обычно сохраняют в новую папку, чтобы не запутаться. В Repl.it всё работает так же, только вместо папок там используются песочницы. На сайте такие песочницы называют словом repl.

А теперь создайте свой repl: напишите название и выберите язык программирования:

4. Включите режим code intelligence

Repl.it предоставляет современные инструменты для разработки. Одним из таких инструментов является функция для автозаполнения. Вы пишете команду, которую питон уже знает, нажимаете клавишу Tab и команда сама напишется полностью. А функция отслеживания ошибок подчеркнет ошибки в коде красной волнистой линией как в Microsoft Word. Узнать подробнее обо всех функциях можно здесь.

Включите режим code intelligence в настройках:

5. Измените indent size

По умолчанию Repl.it устанавливает отступы в 2 пробела. Однако среди питонистов принято использовать 4 пробела, а 2 пробела — моветон. Чтобы следовать этому правилу и избежать в дальнейшем ошибок, выставите в настройках размер indent в 4 пробела:

6. Запустите код

Итак, настало время посмотреть анимацию фильма “Звёздные войны”. Для этого скопируйте следующий код в repl:

И нажмите на кнопку run чтобы запустить программу:

Что почитать

Попробуйте бесплатные уроки по Python

Получите крутое код-ревью от практикующих программистов с разбором ошибок и рекомендациями, на что обратить внимание — бесплатно.

Python поставляется со встроенным REPL. REPL – это программа, которая работает как командная оболочка (программу REPL ещё называют интерактивным интерпретатором Python), предназначенная для ввода и выполнения кода на языке Python. Акроним REPL расшифровывается так:

  • Read — прочитать ввод от пользователя,
  • Eval — выполнить введённый код,
  • Print — распечатать на экран результат,
  • Loop — снова войти в режим ожидания.

Для запуска REPL достаточно набрать python3 . После этого можно выполнять код на Python и сразу же смотреть на результат его выполнения. REPL выводит результат выполнения операции прямо на экран и снова входит в режим ожидания ввода команд.

Такой способ работы очень хорошо подходит для быстрой проверки гипотез "а как работает эта штука?", а также для отладки и простых вычислений. Пример работы с REPL:

Для выхода из REPL нужно вместо ввода кода нажать Ctrl + D.

Встроенная документация

Язык Python прямо на уровне синтаксиса поддерживает дополнение кода документацией. Основным средством документирования являются так называемые "строки документации" ("docstrings"). Документированная функция выглядит так:

Из таких docstrings генерируется online-документация. А ещё эта документация доступна для просмотра прямо в REPL! Для просмотра документации служит функция help . Давайте объявим функцию add в REPL, попробуем её вызвать, а затем посмотрим описание нашей функции и нескольких встроенных:

REPL и примеры кода в источниках

REPL в Python-мире настолько широко используется, что в самых разных источниках — статьях, книгах, документации к библиотекам — можно встретить примеры, изображающие кусочек "диалога" программиста и REPL. Выглядит это примерно так:

Здесь строчки, начинающиеся на >>> (эти символы называются "приглашением" ("prompt")) — это код, введённый программистом. А следующий за "вводом" текст до следующей строчки с приглашением, представляет собой результат выполнения введённого кода. Если вы решите попробовать указанный в таком виде пример самостоятельно, не вводите само приглашение, вводите только сам код, следующий за символами >>> . И строки вывода тоже вводить не нужно — тут уж интерпретатор сам справится!

Привыкайте к этому формату публикации примеров, в наших курсах он тоже будет использоваться широко!

Каноническое представление и вывод на печать

Заметьте, что при вводе строки, в выводе интерпретатора она отображается с кавычками и со спецсимволами. Числа выводятся, как числа. То же самое касается вывода любых других значений: большинство значений выводится в виде "канонического строкового представления" ("canonical string representation"). Представленные таким образом значения, как правило, можно скопировать в строку приглашения и выполнить опять, т.е. каноническое представление обычно является правильным кодом на Python.

Кстати, самостоятельно получить каноническое представление произвольного значения можно с помощью функции repr . Примеры:

А вот результат вызова функции print не содержит кавычек, и спецсимволы, вроде символа переноса строки, не отображаются (но эффект на вывод оказывают). Так происходит, как вы могли догадаться, потому, что мы видим результат вывода строки на печать.

REPL и None

Ещё вам стоит знать о том, как REPL отображает возврат из функции значения None . Дело в том, что никак! Это сделано специально: любая функция, которая не возвращает результат явно, считается функцией, возвращающей None . И чтобы не "мозолить глаза" программисту бесконечными None в выводе REPL, авторами интерпретатора было решено подавлять вывод этого значения. Именно поэтому в примере выше REPL мы не увидели, что функция print на самом деле вернула None ! Но мы всё же можем увидеть в REPL None , если обернём вызов print . в ещё один вызов print :

Вот и оно, значение None ! Мы видим это значение потому, что второй print получает None на вход и приводит к строке, а уже строку — печатает.

Если вы вдруг столкнётесь с ситуацией, когда ваша функция в REPL вызывается, но "ничего не возвращается" — не паникуйте! Возможно ваша функция всего лишь возвращает None (скажем, потому, что вы забыли сделать return )!

Ввод многострочного кода

В Python REPL можно вводить и многострочный код, а ведь не каждый REPL такое позволяет! И пусть отредактировать уже введённые строчки не получится, но, к примеру, небольшие функции вводить вполне удобно. Когда вы вводите строчку, которая по смыслу ещё не завершилась, то REPL меняет приглашение на . и ожидает ввода новой строчки в дополнение к уже введённой. Так можно ввести целое определение функции вместе с docstring и логикой. Окончанием ввода всего многострочного кода служит пустая строчка (поэтому в коде не получится использовать пустые строчки). В источниках примеры с многострочным кодом будут выглядеть так:

REPL — подключение модулей

Вам могут понадобится функции из встроенных в Python модулей. Чтобы воспользоваться ими, нужно импортировать необходимый модуль или функцию:

REPL — удобный калькулятор

Python REPL удобно использовать даже в роли обычного калькулятора, но типичный калькулятор обладает важным свойством — помнит промежуточный результат. Конечно, мы можем использовать для хранения промежуточных результатов переменную:

Обратите внимание, присваивание не приводит к выводу каких-либо значений. Тогда как любая функция возвращает что-нибудь, пусть даже и None , встроенные инструкции (statements) никогда не возвращают значения (и поэтому, в частности, не могут быть частью выражений).

Использование переменных полезно, если промежуточные результаты нам понадобятся позже. Но если результат нужен только в следующем выражении, то можно использовать специальную переменную _ , которая всегда хранит результат выполнения предыдущей команды:

Вот теперь уже больше похоже на работу привычного калькулятора: промежуточные результаты и сохраняются и выводятся на экран после каждого действия!

Более того, переменная _ сохраняет последний успешно полученный результат. Если при выполнении какой-то строчки кода произошла ошибка, то предыдущий результат не будет потерян! Также результат не теряется, если вы вводите инструкции (statements). Это удобно, к примеру, когда вы хотите сохранить текущее значение в переменную. Вот пример, который демонстрирует устойчивость к ошибкам и сохранение результата во время выполнения инструкций.

Открыть доступ

Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно.

Стабильная версия сервиса Repl.it, получившего финансирование бизнес-инкубатора Y Combinator, выпущена в середине марта 2018 года. Данный инструмент позволяет писать и компилировать код и, более того, создавать полноценные full-stack решения прямо в браузере.

Аббревиатура REPL расшифровывается как цикл «чтение-обработка-вывод». Именно такой подход лежит в основе Repl.it.

Особенности

Сервис поддерживает множество языков программирования и библиотек к ним, а также большинство популярных фреймворков.

Rails support

Каждый проект в Repl.it находится в отдельном контейнере, к которому прикрепляется постоянная ссылка, чтобы пользователь всегда имел к нему доступ. Бесплатно можно использовать только один проект, но сервис предлагает несколько планов подписки для продвинутых пользователей с дополнительным пространством и вычислительными мощностями.

Авторы говорят, что их целью было создание окружения для непосредственной разработки без лишних настроек. На старте проекта они использовали Kubernetes, но с ростом базы пользователей, составляющей уже 200 тысяч человек, создали собственный менеджер контейнеров. Разработчики приравнивают его к самостоятельной бессерверной платформе.

MNIST Database

СЕО и сооснователь Repl.it Амджад Масад (Amjad Masad) надеется, что проект его команды сродни новому вычислительному примитиву для написания и производства автономных бессерверных приложений.

Сервис доступен на любом устройстве, подключенном к интернету, в том числе на смартфонах и хромбуках.

17 ноября, Онлайн, Беcплатно

Напомним, что существует большое количество онлайн-компиляторов кода, но каждый из них, в отличие от данного сервиса, заточен под определенное число задач.

Читайте также: