Страница 1 из 1
Відправка тексту приватного на Python

Добавлено:
Пт мар 13, 2020 12:13 pm
lostfeartoday
Взяв приклад:
"Пример отправки приватного сообщения в чат на языке Python 2.7"
https://nsoft-s.com/mcserverhelp/index. ... lejava.htmСпробував застосувати на останньому Python 3.8 (там читав дуже змінився синтаксис).
Викидає помилку:
Traceback (most recent call last):
File "C:\Users\rudenko\Documents\Mychat.py", line 59, in <module>
skt.send(MagicPacket + cs_integration_api + iFlag + MCIAPI_CS_SendPrivateMessage + json.dumps(dict_obj) + CRLF)
TypeError: can't concat str to bytes
Re: Відправка тексту приватного на Python

Добавлено:
Пт мар 13, 2020 1:54 pm
Андрей Раков
Добрий день.
Приклад працює лише з версією 2.7
Для старших версій вам потрібно адаптувати скрипт самостійно, у нас нема спеціалістів з python.
Re: Відправка тексту приватного на Python

Добавлено:
Пт апр 03, 2020 10:13 am
lostfeartoday
"UserTo": це для юзера, а яка команда, якщо потрібно відправити у конференцію?
Дякую)
Re: Відправка тексту приватного на Python

Добавлено:
Пт апр 03, 2020 10:15 am
Георгий Лысенко
Re: Відправка тексту приватного на Python

Добавлено:
Пт апр 03, 2020 10:25 am
lostfeartoday
ict_obj = {
"SendChannelMessage": 3,- і тут канал?
"UserFrom": 0,
"Msg": "Hello",
"hash": "",
"APIStype": "python",
"ServerKey": "iddqd"
CRLF = r"\r\n"; # #13#10
CRLF = struct.pack("BB", 4, 2) # #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"
Re: Відправка тексту приватного на Python

Добавлено:
Пт апр 03, 2020 10:29 am
Георгий Лысенко
Ні. Ось як виглядає синтаксис команди:
Код: Выделить всёСинтаксис
{
"cmd" : "0004", //номер команди
"ServerKey" : "iddqd", //ключ IntegrationAPI
"APIStype" : "python", //з якого середовища відправляємо
"UserFrom" : "0", //від якого користувача відправляємо (uin)
"UID" : 12, //в яку конференцію відправляємо (номер)
"Msg" : "bla-bla-bla" //власне, саме повідомлення
}
Re: Відправка тексту приватного на Python

Добавлено:
Пт апр 03, 2020 10:44 am
lostfeartoday
Ага побачив у Вас в Help дані команди, але чомусь не відправляє у конференцію....
Re: Відправка тексту приватного на Python

Добавлено:
Пт апр 03, 2020 10:45 am
Георгий Лысенко
Покажіть повний код, який намагаєтесь виконати, постараюся допомогти. (Вставте його в тег [code] на форумі)
Re: Відправка тексту приватного на Python

Добавлено:
Пт апр 03, 2020 10:52 am
lostfeartoday
Код: Выделить всё# -*- coding: utf8 -*-
import socket
import json
import struct
HOST = "127.0.0.0"
PORT = 2004
dict_obj = {
"cmd" : "0004", # //номер команди
"ServerKey" : "iddqd", # //ключ IntegrationAPI
"APIStype" : "python", # //з якого середовища відправляємо
"UserFrom" : "0", # //від якого користувача відправляємо (uin)
"UID" : "3", #//в яку конференцію відправляємо (номер)
"Msg" : "Hello" # //власне, саме повідомлення
}
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_SendPrivateMessage + 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()
Re: Відправка тексту приватного на Python

Добавлено:
Пт апр 03, 2020 10:54 am
Георгий Лысенко
У рядку
Код: Выделить всёskt.send(MagicPacket + cs_integration_api + iFlag + MCIAPI_CS_SendPrivateMessage + json.dumps(dict_obj) + CRLF)
ви використовуєте
MCIAPI_CS_SendPrivateMessage замість
MCIAPI_CS_SendChannelMessage
Re: Відправка тексту приватного на Python

Добавлено:
Пт апр 03, 2020 10:59 am
lostfeartoday
Ага, і то правда не додивився)
Красно дякую, допомогли)
![good2 [smilie=good2.gif]](./images/smilies/good2.gif)
Re: Відправка тексту приватного на Python

Добавлено:
Пт апр 03, 2020 11:01 am
Георгий Лысенко
Добре, переношу тему в розділ із скриптами.