Форум программистов, компьютерный форум, киберфорум
Python: API, боты
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 18.04.2019
Сообщений: 1

Бот на VK API не отправляет ответы

11.05.2019, 12:53. Показов 1225. Ответов 1

Студворк — интернет-сервис помощи студентам
Написал простенького бота на Python, но он отвечает только на сообщение "Начать". В чём проблема? Никаких ошибок и предупреждений не выдаёт
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
import vk_api
import sqlite3 as sql
import time
import random
connection = sql.connect("user.sqlite", check_same_thread=False)
 
token = "d94207a38084c051e754ef819badabb201a5f0f826401635b4932ce8e7cb225b9129c6a10005a0a28afe5"
 
vk = vk_api.VkApi(token=token)
vk._auth_token()
 
connection.commit()
connection.close()
 
while True:
    try:
        messages = vk.method("messages.getConversations", {"offset": 0, "count": 200, "filter": "unanswered"})
        if messages["count"] >= 1:
            id = messages['items'][0]['last_message']['peer_id']
            body = messages['items'][0]['last_message']['text']
            if body.lower() == "Начать":
                connection = sql.connect("user.sqlite", check_same_thread=False)
                q = connection.cursor()
                q.execute("SELECT * FROM database WHERE User_ID = '%s'" % (id))
                result = q.fetchall()
                if len(result) == 0:
                    user_info = vk.method("users.get", {"user_ids": id, "fields": "first_name"})
                    user_name = user_info[0]["first_name"]
                    print(str(user_name) + " зарегестрировался")
                    q.execute(
                        "INSERT INTO database (Name, User_ID, Balance, Profit) VALUES ('%s', '%s', '%s', '%s')" % (
                        user_name,
                        id, 0, 0))
                    connection.commit()
                    connection.close()
                else:
                    q.execute("SELECT * FROM database WHERE User_ID = %s" % (id))
                    result = q.fetchall()
                    print(result)
                    user_name = result[0][1]
                vk.method("messages.send", {"peer_id": id, "message": user_name + """, мои команды:
                Инвестировать [сумма]
                Баланс
                Вывести [сумма]""", "random_id": random.randint(1, 2147483647)})
            elif "Инвестировать" in body.lower():
                connection = sql.connect("user.sqlite", check_same_thread=False)
                q = connection.cursor()
                q.execute("SELECT * FROM database WHERE User_ID = %s" % (id))
                result = q.fetchall()
                if len(result) == 0:
                    vk.method("messages.send", {"peer_id": id, "message": "Сначала напишите 'Начать'!", "random_id": random.randint(1, 2147483647)})
                else:
                    q.execute("SELECT * FROM database WHERE User_ID = %s" % (id))
                    result = q.fetchall()
                    profit = result[0][4]
                    plus = int(body.lower().split("Инвестировать ")[-1])
                if plus < 50000:
                    vk.method("messages.send", {"peer_id": id, "message": "Минимальное пополнение от 50000 монеток!", "random_id": random.randint(1, 2147483647)})
                    connection.commit()
                    connection.close()
                else:
                    q.execute("UPDATE database SET Profit = '%s' WHERE User_ID = '%s'" % ((int(profit) + plus) / 100 * 7,77, id))
                    connection.commit()
                    connection.close()
                    vk.method("messages.send", {"peer_id": id, "message": "Баланс пополнен на " + str(plus) + " монеток"})
            elif body.lower() == "Баланс":
                connection = sql.connect('user.sqlite', check_same_thread=False)
                q.execute("UPDATE database GET Balance = '%s' WHERE User_ID = '%s'" % (int(money) + plus, id))
                connection.commit()
                connection.close()
                vk.method("messages.send", {"peer_id": id, "message": "Ваш баланс: " + str(money) + " монеток \n Ваша прибыль: " +str(profit) + " монеток", "random_id": random.randint(1, 2147483647)})
            elif "Вывести" in body.lower():
                connection = sql.connect("user.sqlite", check_same_thread=False)
                q = connection.cursor()
                q.execute("SELECT * FROM database WHERE User_ID = %s" % (id))
                result = q.fetchall()
                money = result[0][3]
                minus = int(body.lower().split("Вывести ")[-1])
                if minus > money:
                    vk.method("messages.send", {"peer_id": id, "message": "Недостаточно средств для вывода!", "random_id": random.randint(1, 2147483647)})
                    connection.commit()
                    connection.close()
                else:
                    q.execute("UPDATE database SET Balance = '%s' WHERE User_ID = '%s'" % (int(money) - minus, id))
                    connection.commit()
                    connection.close()
                    vk.method("messages.send", {"peer_id": id, "message": "Выведено " + str(money) + " монеток", "random_id": random.randint(1, 2147483647)})
    except:
        time.sleep(1)
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
11.05.2019, 12:53
Ответы с готовыми решениями:

VK API - бот не отправляет сообщение
Здравствуйте. Делаю бота для сообщества, пока-что тестовую версию. Вроде сделал всё в точности, как тут...

Бот не отправляет файлы
Форумчане, привет. Есть вот такой бот. Его функционал - это найти на Ютубе видео, скачать, сконвертировать его в мп3 и отправить...

Бот не отправляет аудио
Добрый день. Есть одна проблемка. Пишу бота с возможностью отправки аудио. Использую для этого асинхронную Telegram Bot API и бот скачал,...

1
0 / 0 / 0
Регистрация: 31.05.2019
Сообщений: 1
31.05.2019, 17:25
Для начала у тебя практически везде где ты ищешь в body.lower() ты ищешь текст с верхним регистром.
Цитата Сообщение от Cormented Посмотреть сообщение
elif "Вывести" in body.lower()
Вот например. body.lower() тебе вернут "вывести" а ты ищешь "Вывести", попробуй это для начала исправить.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
31.05.2019, 17:25
Помогаю со студенческими работами здесь

Telegram бот сап отправляет сообщения
Здраствуйте. У меня есть программа для telegram бота. На данный момент бот отвечает на определенное сообщение от пользователя. Что нужно...

Telegram бот сам отправляет сообщения
Здраствуйте. У меня есть программа для telegram бота. На данный момент бот отвечает на определенное сообщение от пользователя. Что нужно...

Бот отправляет несколько раз ответ на сообщение
Создаю бота для телеграмма в консольном приложении на С#.Столкнулся с проблемой,что раз в 10-30 запросов он отвечает дважды на одно и то же...

Бот погоды. Отправляет в исключения при наборе города
Пытаюсь сделать телеграм бота, для погоды. В телеграм подключается, при наборе символов отвечает как надо(строка 40), но при наборе города...

Бот отправляет сообщения только одному пользователю, telebot
Я новичок в написании ботов тг и столкнулся с проблемой,бут пишет все сообщения пользователю который первый запустил его. Подскажите как...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru