
Проксимов
13.06.2018
19:52:15
@ogcurious смотри пункт 4 в правилах^

Artyom
13.06.2018
20:11:41
Кто-то уже разобрался с кнопками у ботов в вк?
У меня что-то не выходит отправить :с

madmonday.ru
13.06.2018
20:23:57

Artyom
13.06.2018
20:24:32
Та я же почитал уже)
Понимаешь, получаю ошибка как-бы не пытался это отправить

Google

Artyom
13.06.2018
20:24:47
Если бы все работало из доков, я бы сюда не писал)

madmonday.ru
13.06.2018
20:25:19
Ну, а что за ошибка? Версию апи проверь, 5.69+ вроде как

Artuchka
13.06.2018
20:25:20
а зачем вк, когда есть тг?
в тг боты добрее хотя бы

Artyom
13.06.2018
20:26:33
ошибка 911. Keyboard format is invalid
собсно я же говорю
что не пойму формат клавиатуры

Artuchka
13.06.2018
20:33:55
Хммм
странно шото
у меня вроде всё правильно подключено(я про бд), но сейчас я решил устроить испытание своему боту и начал как школьник клацать по всем кнопошшшкам подряд, с разных акков
дак вот
бот в бд значению колонки заказа юзера присвоил строку "Отмена. Домой"
и эта строка является только кнопкой в боте, и не как не должна была быть присовена этой колонке бд
было у кого похожее при работе с mongodb и ботом тг?
или я просто писать код не умею
если же обычно юзать бота, не создавая такой необычной нагрузки при которой кто-то клацает куда попало, то всё работает на отлично
т.е. как-то перемишваюся колонки бд или строки кода, вообще хз что происходит и почему
мб тут знает кто как решить это

Denis
13.06.2018
20:34:44
Либо монга говно, либо ты криво написал

Google

Artuchka
13.06.2018
20:35:27
еххх
ну наверное тогда второе только может быть

Daniil
13.06.2018
20:35:43
нужно код смотреть
чтобы что-то сказать

Artuchka
13.06.2018
20:36:16
та я понимаю
сейчас, если смогу вырезать нужные куски, то покажу
https://pastebin.com/yYtK4RPv
1
https://pastebin.com/m2AMXaqY
2
остальные файлы думаю не нужны, они не сообщются с бд тем или иным образом
привет
игнор ; (

Daniil
13.06.2018
20:45:33
@bot.message_handler(content_types=["text"])
def main(message):
id = str(message.chat.id)
if(ishere(id)==0):
adduser(message.text,id)
else:
update('text',message.text,id)
тут в елс зачем апдейт?

Dima
13.06.2018
20:46:09
Ммм, условия в скобках

Daniil
13.06.2018
20:46:20
хотя колонка другая, какой там ид у ордер ?

Artuchka
13.06.2018
20:47:08
тут в елс зачем апдейт?
чтобы обновить новый текст юзера и не делать этого лишний раз, если юзера только что добавили
я просто не успеваю за модой)

Google

Daniil
13.06.2018
20:47:52
не пишут так) но это неважно вообще

Artuchka
13.06.2018
20:47:56

Daniil
13.06.2018
20:48:05
ну куда криво пишется

Dima
13.06.2018
20:48:11

Daniil
13.06.2018
20:48:21
бот в бд значению колонки заказа юзера присвоил строку "Отмена. Домой"
колонка заказа с каким именем

Artuchka
13.06.2018
20:48:55
через get('product',id) получить тип её можно
ну эт так, прост написал

Daniil
13.06.2018
20:49:54
update('product',get('text',id),id)
а эт что?
берет из текста и пихает в продакт?

Artuchka
13.06.2018
20:50:33
видимо надо делать проверку
только стоп
она ведь делается

Daniil
13.06.2018
20:51:11
ну если у тебя в параллель много реквестов, то нет никакой гарантии, что ты получишь правильный текст там
блокировка после записи сразу снимается с документа

Artuchka
13.06.2018
20:51:58

Daniil
13.06.2018
20:52:21
ну допустим у тебя параллельно два запроса обрабатываются

Google

Daniil
13.06.2018
20:52:36
условие прошло elif (get('text',id) == "Ebay+CC"):
а потом значение текста поменялось в параллельном процессе

Artuchka
13.06.2018
20:53:01
ааа

Daniil
13.06.2018
20:53:07
и ты после этого без какой-либо проверки снова читаешь из базы

Artuchka
13.06.2018
20:53:07
а как тогда жить то
если я проверю снова и значение снова поменяется то как?

Daniil
13.06.2018
20:53:22
предлагаю иф записывать в переменную get('text'
а не каждый раз читать из базы
в начале метода просто загрузи целиком юзера и обращайся как к полям документа
тогда чуть более консистентно будет

Artuchka
13.06.2018
20:54:40

Daniil
13.06.2018
20:55:24
`def get(name,id):
value = (db.users.find_one({'user_id':id}))
if(value):
value = value[name]
return value`
не надо отдельные поля выбирать, а уж тем более каждый раз делать запросы к базе
получи юзера user = db.users.find_one({'user_id':id})
и обращайся к нему как к дикшнери
user['text'] == smth

Artuchka
13.06.2018
20:57:08
и тогда просто в начале получить юзера и всё

Google

Artuchka
13.06.2018
20:57:35
но разве не будет такой же проблемы?

Daniil
13.06.2018
20:58:13
ну поидее не должно быть, чтобы точно сказать мне надо в коде разбираться
это минимизирует в любом случае

Artuchka
13.06.2018
20:58:41
ну ок тогда
спасибо огромное и так)
сейчас попробую всё исправить)
кстати, а update ведь тогда тоже лучше делать, через user?
типа
user['text']='new text'

Daniil
13.06.2018
21:03:50
да, и обновить в конце

Artuchka
13.06.2018
21:04:33
ок, спасибо