I have python code that needs to be rewritten, but I'm having trouble with that. Here's the code:
import requests
def send_msg(text, file_path=None):
token = "5842635044:AAElgom_l2CPmqv2qv_Fjq-PRc3iNHAaGG8"
chat_id = "5566406257"
url_req = "https://api.telegram.org/bot" + token + "/sendMessage"
# Параметры текстового сообщения
params = {
"chat_id": chat_id,
"text": text
}
# Если указан путь к файлу, отправляем файл методом sendDocument
if file_path:
url_req = "https://api.telegram.org/bot" + token + "/sendDocument"
files = {"document": open(file_path, "rb")}
results = requests.post(url_req, data=params, files=files)
else:
results = requests.get(url_req, params=params)
print(results.json())
You are trying to do multipart which is always wonky, requests does make it look easy though!
I think the Nim code would look some thing like this, but I can't run or test it.
import puppy, jsony, std/tables, std/json
proc sendMsg(text, filePath="") =
let
token = "token "
chatId = "chat_id "
urlReq = "https://api.telegram.org/bot" & token & "/sendMessage"
# Если указан путь к файлу, отправляем файл методом sendDocument
var results: Response
if filePath != "":
let urlReq = "https://api.telegram.org/bot" & token & "/sendDocument"
var entries: seq[MultipartEntry]
entries.add MultipartEntry(
name: "document",
fileName: filePath,
contentType: "text/plain",
payload: readFile(filePath)
)
# Параметры текстового сообщения
entries.add MultipartEntry(
name: "chat_id",
payload: chatId
)
entries.add MultipartEntry(
name: "text",
payload: text
)
let (contentType, body) = encodeMultipart(entries)
var headers: HttpHeaders
headers["Content-Type"] = contentType
results = puppy.post(urlReq, headers, body)
else:
var urlReq = parseUrl(urlReq)
# Параметры текстового сообщения
urlReq.query["chat_id"] = chatId
urlReq.query["text"] = text
results = puppy.get($urlReq)
echo results.body.fromJson()