@ruhgweg

Оцените код написание моего бота, если есть вода в коде (что-то лишние), то отпишите пж, и какие есть форумы на которых обсуждаются темы такого вида?

вот код написания вк бота на питоне (основа, я не стал доделывать):

import vk_api, json
from vk_api.longpoll import VkLongPoll, VkEventType
from os.path import abspath
from key import token

vk_session = vk_api.VkApi(token = token)
longpoll = VkLongPoll(vk_session)

class User():
	def __init__(self, user_id, command, invested, balance, balance_investment):
		self.user_id = user_id
		self.command = command
		self.invested = invested
		self.balance = balance
		self.balance_investment = balance_investment

def save_bd(users):
	lines = []
	for user in users:
		lines.append(f'"user_id": {user.user_id}, "command": "{user.command}", "invested": {user.invested}, "balance": {user.balance}, "balance_investment": {user.balance_investment}')
	lines = "\n".join(lines)
	with open(f'{abspath(__file__)}/data.txt'.replace("\\", "/").replace("main.py/", ""), "w", encoding = "utf-8") as file:
		file.write(lines)
		file.close()

def read_bd():
	users = []
	with open(f'{abspath(__file__)}/data.txt'.replace("\\", "/").replace("main.py/", ""), "r", encoding = "utf-8") as file:
		lines = [x.replace("\n", "") for x in file.readlines()]
		file.close()
	for line in lines:
		line = eval("{" + line + "}")
		if line != "{}":
			users.append(User(user_id = line['user_id'], command = line['command'], invested = line['invested'], balance = line['balance'], balance_investment = line['balance_investment']))
	return users

def get_keyboard(text, color):
	return {
		"action": {
			"type": "text",
			"payload": "{\"button\": \"" + "1" + "\"}",
			"label": f'{text}'
		},
		"color": f'{color}'
	}

keyboard_main = {
	"one_time": False,
	"buttons": [
		[get_keyboard("Инвестировать", "positive")]
	]
}

keyboard_back = {
	"one_time": False,
	"buttons": [
		[get_keyboard("Назад", "negative")]
	]
}

keyboard_main = str(json.dumps(keyboard_main, ensure_ascii = False).encode("utf-8").decode("utf-8"))
keyboard_back = str(json.dumps(keyboard_back, ensure_ascii = False).encode("utf-8").decode("utf-8"))

def sender(user_id, message, keyboard):
	vk_session.method("messages.send", {"user_id": user_id, "message": message, "keyboard": keyboard, "random_id": 0})

users = read_bd()

print("Bot started!")
for event in longpoll.listen():
	if event.type == VkEventType.MESSAGE_NEW:
		if event.to_me:
			user_id = event.user_id
			message = event.message.lower()

			if message == "начать":
				flag = False
				for user in users:
					if user.user_id == user_id:
						flag = True
						break
				if not(flag):
					users.append(User(user_id = user_id, command = "main", invested = 0, balance = 100, balance_investment = 100))
					sender(user_id, " Ты попал в PassiveCapital. Наш бот поможет тебе заработать на нехилую старость. Погнали.", keyboard_main)
			else:
				for user in users:
					if user.user_id == user_id:
						if user.command == "main":
							if message == "инвестировать":
								sender(user_id, "1 = 1 рубль\n\nВы можете инвестировать: " + str(user.balance_investment + user.balance) + "\n\nБаланс который можно инвестировать: " + str(user.balance_investment) + "\nБаланс который можно вывести: " + str(user.balance) + "\n\nКакую сумму будете инвестировать?", keyboard_back)
								user.command = "investment"
			save_bd(users)
  • Вопрос задан
  • 97 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы