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

Интеграция Discord через сокеты

Рекомендуемые сообщения

Вдруг решил я написать программу для управления компом через дискорд, но поскольку на Lua это не реализовано(по крайней мере здесь ничего подобного не было),я решил использоовать Python, да и тем более мне не взлюбился Lua,да и знаю я его слабо.Обращаю внимание на то,что код на стороне Lua это дичайший франкенштейн из разных гайдов и функций в интернете!Да и сторона питона то вообщем не славится отсутствием костылей)

Код на Lua:

Скрытый текст

Cvmw5r1LN2.png.3dbd1e912bd215734511a5aba7fa5642.png

Код на Python:

Скрытый текст

nI89OVpkFI.thumb.png.d2eab9fb6da6abe4ee7fcb08725521e1.png

Внимание!

В client.run находится токен бота.

global использовать было нежелательно,но это самое быстрое решение которое я нашел

Перед использованием необходимо открыть порт(в данном случае 1337)

В internet.open первым аргументом указываете свой айпи(там не мой айпи,пробить не пытайтесь)

Инструкция по использованию:

1.Запустить код на Python(сервер)

2.Запустить код на Lua(клиент)

В консоли где вы запускали питоновский код,должно появится сообщение "<адрес> connected"

3.В дискорд сервере куда вы пригласили бота написать /execute_lua <команда> и он выполнит команду на OpenOS и вернет вам то,что вывела эта команда

(эта команда выполнится на компе OpenComputers)

Скоро появятся новые фичи по типу выполнения кода на луа и видео с примером использования.

  • Нравится 1
  • Одобряю 1
  • Спасибо 1
  • В шоке 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А вот и пример использования:

Скрытый текст

 

На фоне звуки от майнкрафта, это не шум микрофона)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Необычное решение. Могу дать совет почитать лучше discord.py так как там есть готовые обработчики команды а не через on_message.
Так же вопрос как подключатся если ты играешь на сервере?

Ну просто безопасности никакой нет. А если и есть свой хост с белым ip то хотя бы пароль (думаю там и ключи можно но хз как они в компах робят). по хорошему еще прием сообщений через сокет делать асинхронным что бы бот не блокировался весь и можно получать к примеру множество сообщений... ТАК же очень не советую юзать глобальные переменные, ихмо если код будет большим лучше сделать класс (есть шанс запутаться). По коду на lua не шарю но вроде норм для такого варианта.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
50 минут назад, Taruu сказал:

Необычное решение. Могу дать совет почитать лучше discord.py так как там есть готовые обработчики команды а не через on_message.
Так же вопрос как подключатся если ты играешь на сервере?

Ну просто безопасности никакой нет. А если и есть свой хост с белым ip то хотя бы пароль (думаю там и ключи можно но хз как они в компах робят). по хорошему еще прием сообщений через сокет делать асинхронным что бы бот не блокировался весь и можно получать к примеру множество сообщений... ТАК же очень не советую юзать глобальные переменные, ихмо если код будет большим лучше сделать класс (есть шанс запутаться). По коду на lua не шарю но вроде норм для такого варианта.

Угу,я знаю,декоратор client.command и prefix.Класс уже пробовал,не получилось,знаю что global лучше не юзать.Не стал делать асинхронность(хотя желательно) ибо это было расчитано на 1 клиента.Опять же поскольку было расчитано на 1 клиента и об этом никто не знал,о безопасности речи и быть не может ибо зачем.Скоро все пофикшу

 

И да,если ты не понял то демонстрация клиента происходила на стороннем сервере майна а сервер программы запускался на моем компе)0.0.0.0 в сервере - весь инет,а то что в клиенте - айпи(не локальный) так что вот так

Изменено пользователем ov3rwrite

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Тоесть выходит, что это просто программа дистанционного доступа к ОС компу. А нельзя было сделать аналогично но без использованием внешнего сервера? (не разбирался как работает дискорд)

И код лучше всего выложить не скрином а именно кодом, так как скрины могут пропадать.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
25 минут назад, Asior сказал:

Тоесть выходит, что это просто программа дистанционного доступа к ОС компу. А нельзя было сделать аналогично но без использованием внешнего сервера? (не разбирался как работает дискорд)

И код лучше всего выложить не скрином а именно кодом, так как скрины могут пропадать.

 

И как же вы предлагаете без внешнего сервера?)Куда подключаться?И да,без проблем можно реализовать мост между чатами.Вы говорите так,как-будто эта программа должна делать что-то большее

Изменено пользователем ov3rwrite

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
33 минуты назад, ov3rwrite сказал:

И как же вы предлагаете без внешнего сервера?)Куда подключаться?И да,без проблем можно реализовать мост между чатами.Вы говорите так,как-будто эта программа должна делать что-то большее

https://discord.com/developers/docs/reference

Цитата

Discord's API is based around two core layers, a HTTPS/REST API for general operations, and persistent secure WebSocket based connection for sending and subscribing to real-time events. The most common use case of the Discord API will be providing a service, or access to a platform through the OAuth2 API.

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

P.S так же: All HTTP-layer services and protocols (e.g. HTTP, WebSocket) within the Discord API are using TLS 1.2. Это значит, что используя библиотеку Fingercomp (Который не хочет писать TLS 1.3) и написав вебсокеты, можно сделать даже сделать реалтайм клиент. 

 

Изменено пользователем BrightYC

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
8 минут назад, BrightYC сказал:

https://discord.com/developers/docs/reference

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

P.S так же: All HTTP-layer services and protocols (e.g. HTTP, WebSocket) within the Discord API are using TLS 1.2. Это значит, что используя библиотеку Fingercomp (Который не хочет писать TLS 1.3) и написав вебсокеты, можно сделать даже сделать реалтайм клиент. 

 

Вполне вероятно)Если честно я очень поверхнстно разбираюсь в discord api,поэтому не стал заморачиваться

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Вообщем залил я все это дело на гитхаб, если кому это вообще понадобится

https://github.com/GalactiMeX/OC-Discord

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

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

Гость
Ответить в тему...

×   Вы вставили отформатированное содержимое.   Удалить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.


×
×
  • Создать...