ANTICHAT

ANTICHAT (https://forum.antichat.xyz/index.php)
-   Общие вопросы программирования (https://forum.antichat.xyz/forumdisplay.php?f=206)
-   -   Что написать? (https://forum.antichat.xyz/showthread.php?t=1474654)

AugustTN 19.04.2023 17:52

Привет, предложите идеи что написать на питоне

Тг боты, небольшие проги и т.д

Читы и подобное не пишу

хомяк553 19.04.2023 18:51

Напиши ракбот полностью на питоне

histor 20.04.2023 07:29

Цитата:

Сообщение от Loocking

Привет, предложите идеи что написать на питоне
Тг боты, небольшие проги и т.д
Читы и подобное не пишу

Дискорд ботов попробуй

kyrtion 20.04.2023 07:31

Цитата:

Сообщение от хомяк553

Напиши ракбот полностью на питоне

Цитата:

Сообщение от histor

Дискорд ботов попробуй

а если так, управление ракбота через дс на питон?

1 канал = 1 бот

TastyBread123 20.04.2023 13:35

Цитата:

Сообщение от kyrtion

а если так, управление ракбота через дс на питон?
1 канал = 1 бот

И как ты это представляешь?

chromiusj 20.04.2023 13:41

Цитата:

Сообщение от Vtylochka

И как ты это представляешь?

https://forum.antichat.xyz/attachmen...39c7a90147.png

я бы заорал

kyrtion 21.04.2023 10:23

Цитата:

Сообщение от CHRXMIUSJ

я бы заорал

я имею виду текстовый канал

chereshnya 21.04.2023 10:23

напиши девочке, отвлекись от компа

chromiusj 21.04.2023 10:27

Цитата:

Сообщение от kyrtion

я имею виду текстовый канал

а чем гс канал не топчик заходишь а там звуки роутера

ukiru 21.04.2023 17:43

Цитата:

Сообщение от Vtylochka

И как ты это представляешь?

Я не разбираюсь в теме ракботом, поэтому будем считать, что используется RakSAMP Lite, а все действия с его стороны - луа скрипт. Вот один из вариантов, как это может работать:

При запуске ракбот (далее
Код:

R
) отправляет POST HTTP запрос для инициализации на HTTP сервер дс бота (далее
Код:

B
), так называемое "рукопожатие". Тело запроса будет примерно следующим:

YAML:





Код:

# Для легкой читаемости использую YAML. В реальности это был бы JSON или form-data
#format key: type
token
:
string
# Токен клиента
game_info
:
Object
# Информация об игре.  Не придумал, что конкретно можно передавать. Как пример: версия игры и что-то похожее
samp
:
server
:
string
# Адрес и порт сервера
player
:
id
:
int
# ИД игрока на сервере
nick
:
string
# Никнейм



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

Здесь будет работать правило: токен=канал

В ответе
Код:

B
присылает одноразовый ключ, действующий считаные секунды. Одновременно с этим оповещая в канале бота об успешном "рукопожатии".

После
Код:

R
устанавливает websocket(WS) соединение, передав одноразовый ключ и токен.

Благодаря WS соединению мы можем отправлять данные из игры в дискорд или наоборот. В этом месте стоит написать документацию/cтандартизацию и набор стандартных команд, возможность создавать собственные команды на луа, которые будут подключаться как модули. В общем полёт для фантазии приличный.

Я думаю будет уместным использования JSON RPC как формат для общения по сети.

Поверх моего "протокола" можно ещё накинуть условное шифрование, но я бы обошёлся просто использованием защищённого соединения (HTTPS, WSS)

Цитата:

Сообщение от Спойлер

или подобии на мат. описание))

Код:





Код:

A - клиент (человек)
B - дискорд бот
R - ракбот
T - токен

[A] C = {ds_server_id, ds_channel_id, owner_list} -> C -> [B]
[B] T -> T -> [A]

[R] T, S -> T, S -> [B], где S - информация об игре
[B] -> WakeUp -> [A]
[B] T, K -> T, K-> [R], где K - одноразовый ключ

WEBSOCKET:
[R] -> K -> [B]
PARAREL:
    [1]:
        [R] -> D_r -> [B]
        [B] S = H(D_r) -> S -> [A]
    [2]:
        [A] -> D_a -> [B]
        [B] J = P(D_a) -> J ->  [R]
        [R] D_r = H(J) --> [1]  // типо опять выполняется [1]
D_r - команда в JSON формате
D_a - команда из дискорда
H - обработчик JSON команд
P - обработчик Discord команд




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


Время: 13:26