iSida bot dev - @isida_bot_dev - 2020/11/08
19:23:37 Grey_83 Сергей так, добавление сервера в словарь сделал
и даже происходит чтение из него
вот только хз как добавить больше 1 сервера
тупо в словаре перезаписывается сервер
структура такая:
{848478745: {'192.168.2.101:27015': ('192.168.2.101', 27015)}}

19:25:31 Grey_83 Сергей и ещё: как сделать сохранение БД серверов, чтобы при перезапуске бота она не проёбывалась?
19:25:50 Hetleven VitaliyS Нужно добавлять с новым ключем
19:27:15 Grey_83 Сергей когда делал так:
SERVERS[USER_ID][SERVER_NAME[0]] = SV_ADDRESS
то ругалось на USER_ID

19:27:48 Grey_83 Сергей сейчас идёт добавление так: SERVERS[USER_ID] = {SERVER_NAME[0]: SV_ADDRESS}
19:28:21 Hetleven VitaliyS Один пользователь - один сервер?
19:28:41 Grey_83 Сергей хм
появилась идея
ща проверю

19:30:50 Grey_83 Сергей до задницы: KeyError: 848478745
19:31:17 Grey_83 Сергей LIST[SERVER_NAME[0]] = SV_ADDRESS
вот на это ругается

19:31:22 Hetleven VitaliyS https://python-scripts.com/json#json-python-example
19:31:27 Hetleven VitaliyS Например так
19:31:29 Grey_83 Сергей а не
19:31:33 Hetleven VitaliyS Или бд
19:32:03 Grey_83 Сергей на вывод в консоль ругается
19:32:42 Grey_83 Сергей json в текстовом файле сохранять?
19:32:57 Grey_83 Сергей лучше уж БД
19:33:39 Grey_83 Сергей правда вся эта ебатория со словарями зря
19:51:02 Grey_83 Сергей так, разобрался с косяком в создании словаря
19:51:39 Grey_83 Сергей просто добавил проверку =)
if USER_ID not in SERVERS:
SERVERS[USER_ID] = {}

19:53:22 Grey_83 Сергей теперь можно начинать реализовывать удаление серверов и добавление больше одного сервера за раз
22:12:47 Grey_83 Сергей запилил сохранение списка в json
и читается норм
только почему-то при преобразовании в json число (id пользователя) в строку преобразует

22:15:15 Grey_83 Сергей даже сделал автосоздание файла БД и заполнение его "{}" при создании
22:15:50 AlexZenoo Alex Zenoo прямо в sqlite? омг.
22:15:52 Grey_83 Сергей и файл будет сохраняться по пути Isida/data/servers.json
22:16:02 diSabler Андрей Горелов json.loads и json.dooms в помощь..
22:16:09 Grey_83 Сергей нет
я без sql

22:16:23 Grey_83 Сергей так уже
22:16:28 AlexZenoo Alex Zenoo а какой смысл в эти {} вы вкладываете?
22:16:54 Grey_83 Сергей а при пустом файле падает модуль
22:17:33 Grey_83 Сергей при попытке прочесть с помощью json вылетает except ValueError
22:18:29 diSabler Андрей Горелов Ну так проверять надо. Наличие файла, соответствие типу.
22:18:42 AlexZenoo Alex Zenoo гм. я так понял, что {} - это у вас значения...
22:18:55 Grey_83 Сергей SERVERS = {}

if os.path.exists(SAVE_FILE):
try:
SERVERS = json.load(io.open(SAVE_FILE, 'r'))
print('\n')
print(SERVERS)
print('
\n')
except ValueError:
with io.open(SAVE_FILE, 'w', encoding='utf8') as outfile:
str_ = json.dumps(SERVERS, ensure_ascii=False)
outfile.write(to_unicode(str_))

22:20:06 Grey_83 Сергей пока плагин в 94 строки
22:20:10 AlexZenoo Alex Zenoo ну так в коде это.
22:20:22 AlexZenoo Alex Zenoo а в json внутри...
22:20:24 Grey_83 Сергей теперь нуно удаление серверов сделать
22:21:46 Grey_83 Сергей сделать что ли вывод клавы при вводе команды удаления без параметров?
22:22:32 Grey_83 Сергей а при нажатии на кнопку чтобы отправлялась команда на удаление выбранного сервера из базы
22:23:40 Grey_83 Сергей мда, нашёл я себе игрушку

это при том что у меня плагин есть на 1700+ строк на SourcePawn

22:24:15 Grey_83 Сергей а в питоне я ни в зуб ногой 😆
22:27:36 Grey_83 Сергей блин, как сделать автогенерацию кнопачек?

я так понял они в json делаются, а потом просто добавляются в сообщение

22:28:27 Hetleven VitaliyS посмотри плагин oboobs, я там кнопочки делал
22:28:46 Grey_83 Сергей а нуно сделать чтобы выводило не все, если их больше 10
чтобы можно было листать страницы
и чтобы при удалении клава обновлялась
как бы не пришлось бота пилить вместо плагина

22:28:55 Hetleven VitaliyS там не инлайновые, но инлайновые аналогично, кажется только название метода другое
22:29:08 Grey_83 Сергей но они у тебя там захардкоджены
я смотрел

22:29:24 Hetleven VitaliyS а что тебе мешает создать их самому?
22:29:37 Grey_83 Сергей inline_keyboard?
22:30:12 Grey_83 Сергей нуно много времени чтобы вкурить что и как
22:30:43 Hetleven VitaliyS 🖼 [Picture]
22:35:49 Grey_83 Сергей ну да, типа такого
22:37:49 Grey_83 Сергей в принципе можно уже и потестить бота
просмотр и удаление серверов работает только в ЛС
добавление пока ещё в чате пашет

22:38:30 Grey_83 Сергей удаление не работает, а только выводит сообщение сколько серверов в базе у пользователя
22:40:32 Grey_83 Сергей нуно пока ещё исправить сохранение сервера: некоторые ключи можно разными способами записать для 1 сервера:
***.***.***.***
***.***.***.***:
***.***.***.***:27015
для ***.***.***.***:27015

22:41:44 Grey_83 Сергей и хз, как валидность записи адреса сделать
сделана совсем уж простенькая проверка на наличия точки в адресе и то что порт состоит только из цифр

22:42:20 Hetleven VitaliyS это совсем уж странный вопрос
22:42:33 Grey_83 Сергей последний?
22:42:56 Grey_83 Сергей предпоследний я пофикшу без осорбых проблем
22:46:48 diSabler Андрей Горелов 256.256.256.256:65536
22:47:45 Hetleven VitaliyS https://www.rupython.com/ip-python-973.html
22:48:09 Hetleven VitaliyS спроси гугла, такие вопросы уже давно решены, и не одним способом
22:50:10 Grey_83 Сергей прикол в том, что в качестве адреса может быть и не айпишник
22:50:51 Grey_83 Сергей проверить корректность ввода айпишника не проблема
22:51:06 diSabler Андрей Горелов Как-то это сложно. Адрес можно представить числом из 4 байт. Первый байт от 1 до 255.
22:54:23 Hetleven VitaliyS я про то, что эта задача уже решена кучей разных способов, от регулярок до отдельных модулей, незачем изобретать велосипед
22:55:14 diSabler Андрей Горелов А, с этой стороны.. Да, согласен.
23:01:00 AlexZenoo Alex Zenoo а про телеграм и программинг для него тут специальный чат даже есть...
23:01:25 Hetleven VitaliyS это не про телеграмм вопрос
23:01:30 Grey_83 Сергей да я как-то по старинке в инетах читаю
23:01:48 AlexZenoo Alex Zenoo а про что? кнопки в телеграме...
23:04:57 AlexZenoo Alex Zenoo они там когда не с*ач разводят, всё время про эти кнопки, ботов и так далее...
23:08:11 Hetleven VitaliyS а что про них говорить? они в доках нормально описаны
23:08:52 AlexZenoo Alex Zenoo ну, это к ним вопрос.
23:09:28 AlexZenoo Alex Zenoo а медленный режим тут только для меня, или для всех неадминов?
23:12:04 Hetleven VitaliyS куда-то спешишь?
23:13:24 AlexZenoo Alex Zenoo жить и чувствовать.
23:17:46 AlexZenoo Alex Zenoo так всё же. только для меня?
23:21:40 Grey_83 Сергей не только
23:22:06 AlexZenoo Alex Zenoo странно.