Роботы, плагины и скрипты к чату MyChat. Разработка альтернативных клиентов и различных утилит. Технические вопросы по программированию, замечания и предложения по развитию API
Аватара пользователя
lostfeartoday
Перестал работать скрипт под Python после обновления до версии 8.14
с 8.04
Какие -то были изменения?

Код: Выделить всё
# -*- coding: utf-8 -*-
import sys
import socket
import json
import struct
HOST = "10.0.23.6"
PORT = 2004
with open(r"txt.txt", "r") as  file_handler:
  for line in file_handler:
       print(line)
       

dict_obj = {
 "cmd"       : "0004",       # //номер команди
 "ServerKey" : "iddqd",       # //ключ IntegrationAPI
 "APIStype"  : "python",    # //з якого середовища відправляємо
 "UserFrom"  : "0",          # //від якого користувача відправляємо (uin)
 "UID"       : "3",             #//в яку конференцію відправляємо (номер)
 "MsgType"   : "7",
 
 "Msg"       :
{
     
"Link"      : (line), #// текст ао
"Desc"      : ""

  }
}

CRLF = r"\r\n";  # #13#10
CRLF = struct.pack("BB", 13, 10)  # #13#10


MCIAPI_CS_SendPrivateMessage  = "0002"
MCIAPI_CS_IsUINOnline         = "0003"
MCIAPI_CS_SendChannelMessage  = "0004"
MCIAPI_CS_GetUINByNick        = "0005"
MCIAPI_CS_GetUINByEmail       = "0006"
MCIAPI_CS_IsUINExists         = "0007"
MCIAPI_CS_AddBBSMessage       = "0008"
MCIAPI_SC_SetChannelTopic     = "0009"
MCIAPI_CS_GetChannelNameByUID = "0010"
MCIAPI_CS_IsChannelExists     = "0011"
MCIAPI_CS_GetUINByADLogin     = "0012"
MCIAPI_CS_GetInfoByUIN        = "0013"
MCIAPI_CS_GetServerInfo       = "0014"

MagicPacket = struct.pack("BB", 23, 6)  # B - unsigned char. 1 byte
cs_integration_api = "0077"
iFlag = "30"

try:

    try:
        skt = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    except socket.error as e:
        print ("Error creating socket: %s" % e)

    try:
        skt.connect((HOST, PORT))
    except socket.gaierror as e:
        print("Address-related error connecting to server: %s" % e)
    except socket.error as e:
        print("Error connecting to socket: %s" % e)

    try:
        skt.send(b'mc5.20\r\n')
        data = skt.recv(1024)
        print(bytes.decode(data))

        skt.send(MagicPacket + cs_integration_api + iFlag + MCIAPI_CS_SendChannelMessage + json.dumps(dict_obj) + CRLF)

        data = skt.recv(1024)
        print bytes.decode(data)

    except socket.error as e:
        print("Error connecting to socket: %s" % e)

finally:
    skt.close()
Аватара пользователя
Алексей Пикуров
Что конкретно у вас не работает?

Код: Выделить всё
 data = skt.recv(1024)
        print bytes.decode(data)

Покажите результат.
Аватара пользователя
lostfeartoday
Код: Выделить всё
============= RESTART: C:\Python27\Mychat_otpravka_ot_valery_.py =============
п»ї

https://meet.google.com/

800000{"IPListTURN":"","ServPass":false,"ServName":"\u0414\u0435\u043f\u0430\u0440\u0442\u0430\u043c\u0435\u043d\u0442 \u0441\u043e\u0446\u0456\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0437\u0430\u0445\u0438\u0441\u0442\u0443 \u043d\u0430\u0441\u0435\u043b\u0435\u043d\u043d\u044f \u0421\u0443\u043c\u0441\u044c\u043a\u043e\u0457 \u043c\u0456\u0441\u044c\u043a\u043e\u0457 \u0440\u0430\u0434\u0438","UpdatePacketVer":"8.14.0","CID":3047,"RelDate":"28.12.2021","ProtocolVer":"2.57","Win32NextUpdatePacketSize":18804934,"PortTURN":8888,"PortNode":8080,"NoSSLPortNode":8090,"PortFTP":20000,"Win32NextUpdateCRC32":1928791237,"ServerVer":"8.14.0","Win32NextUpdatePacketVer":"8.14.0","HTTPS","ID":"1E12C61C","Registered":"\u0414\u0435\u043f\u0430\u0440\u0442\u0430\u043c\u0435\u043d\u0442 \u0441\u043e\u0446\u0456\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0437\u0430\u0445\u0438\u0441\u0442\u0443 \u043d\u0430\u0441\u0435\u043b\u0435\u043d\u043d\u044f \u0421\u0443\u043c\u0441\u044c\u043a\u043e\u0457 \u0
43c\u0456\u0441\u044c\u043a\u043e\u0457 \u0440\u0430\u0434\u0438","HelloMsg":"\u0412\u0456\u0442\u0430\u0454\u043c\u043e \u0443 \u0447\u0430\u0442\u0456 \u0414\u0435\u043f\u0430\u0440\u0442\u0430\u043c\u0435\u043d\u0442\u0443 \u0441\u043e\u0446\u0456\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0437\u0430\u0445\u0438\u0441\u0442\u0443 \u043d\u0430\u0441\u0435\u043b\u0435\u043d\u043d\u044f \u0421\u0443\u043c\u0441\u044c\u043a\u043e\u0457 \u043c\u0456\u0441\u044c\u043a\u043e\u0457 \u0440\u0430\u0434\u0438! \u0411\u0443\u0434\u044c\u0442\u0435 \u0432\u0432\u0456\u0447\u043b\u0438\u0432\u0438\u043c\u0438 \u043e\u0434\u0438\u043d \u0434\u043e \u043e\u0434\u043d\u043e\u0433\u043e! \u0413\u0430\u0440\u043d\u043e\u0433\u043e \u0432\u0430\u043c \u0434\u043d\u044f!","UpdatePacketSize":17819704,"YourIP":","HWID":"456940444_5839_6-10-5-610050330","Free":false,"UpdateCRC32":1954117430,"CurrentDT":"05.01.2022.06.08.22.492"}
Аватара пользователя
Алексей Пикуров
Результат после отправки вашего сообщения, а не до этого.
Аватара пользователя
lostfeartoday
Это и есть после отправки, просто нечего не происходит, сразу же после обновления, перестал работать)
Аватара пользователя
Алексей Пикуров
Нужно поставить среду разработки для Python и посмотреть, как работает ваш скрипт под отладчиком. А пока вы можете включить Verbosе протоколирование на сервере и посмотреть, что ваш скрипт отправляет на сервер MyChat.
Аватара пользователя
Алексей Пикуров
Дайте текстовый файл, пожалуйста.
Аватара пользователя
Алексей Пикуров
Скрипт работает, ссылка отправилась в конференцию, всё ок.
Аватара пользователя
Алексей Пикуров
Переношу тему в вопросы.
Аватара пользователя
lostfeartoday
Хорошо, буду пробовать у себя искать причину, почему написал на форум, так как после обновления и перестал срабатывать скрипт :)
Аватара пользователя
Алексей Пикуров
Обычно так и бывает :) Посмотрите в сторону файрволов/антивирусов, может, после обновления они свои правила не обновили и фильтруют/ломают трафик между вашим сервером MyChat и интерпретатором пайтона.
Аватара пользователя
lostfeartoday
все нормально работает просто был отключен API после обновления [smilie=biggrin.gif]

Спасибо за помощь.
Аватара пользователя
Алексей Пикуров
Я выключил для теста Integration API, и, как и ожидалось, Python в консоли выводит ошибку о том, что Integration API выключен:

Код: Выделить всё
{"cmd":"0001","evocator":"","error":9,"hash":""}

https://nsoft-s.com/mcserverhelp/index. ... sabled.htm

Попробуйте у себя проверить на localhost с сервером MyChat. Мы добавили небольшую паузу между отправкой ошибки и разрывом соединения, если вдруг у вас сеть работает медленно и хост-отправитель не успевает получить эту информацию.
Аватара пользователя
Алексей Пикуров
P.S. Мы добавили в ответе про ошибку ссылки на русскую и английскую справки для ускорения поиска ответа, почему произошла ошибка:

Код: Выделить всё
{"error_desc_ru":"https:\/\/nsoft-s.com\/mcserverhelp\/index.html?integrationapierr9.htm","error_desc_en":"https:\/\/nsoft-s.com\/en\/mcserverhelp\/index.html?integrationapierr9.htm","cmd":"0001","evocator":"0004","error":9,"hash":""}