БОТ для ВК

Sanchez.

Известный
Автор темы
704
187
Python:
import vk_api
from vk_api.longpoll import VkLongPoll, VkEventType
from vk_api.keyboard import VkKeyboard, VkKeyboardColor

vktoken = 'ага, хуй тебе'

vk_session = vk_api.VkApi(token = vktoken)
session_api = vk_session.get_api()
longpoll = VkLongPoll(vk_session)

'''
class User:
    def __init__(self, city, money, people):
        self.city = city
        self.money = money
        self.people = people
        '''

data = {}

def add_bd(user_id):
    file = open('data.txt', 'a', encoding = 'utf-8')
    file.write(f'{user_id}\n')
    data.append({
        user_id: {'city': None, 'money': 0},
    })
    file.close()

def povtor_bd(x):
    file = open('data.txt', 'r', encoding = 'utf-8')
    if str(x) in file.read():
        return 1
    else:
        return 0

##city = None

##user = User(None, 0, 0)

strana = False

def send(id, text, keyboard=None):
    post = {
        'user_id' : id,
        'message' : text,
        'random_id' : 0,
        ##'keyboard' : keyboard.get_keyboard
    }

    if keyboard != None:
        post['keyboard'] = keyboard.get_keyboard()
    else:
        post = post

    vk_session.method('messages.send', post)

for event in longpoll.listen():
    if event.type == VkEventType.MESSAGE_NEW:
        if event.to_me:
            msg = event.text
            id = event.user_id

            if msg == '!начать':
                ##send(id, '📋 | Привет, это Political Bot. Ты можешь создать свою страну и в дальнейшем управлять ею. Ты можешь: начинать войну за города, создавать свои войска, открывать новые города и так далее.')
                keyboard = VkKeyboard(one_time=True)
                keyboard.add_button('🚩Создать страну', VkKeyboardColor.PRIMARY)
                send(id, '📋 | Привет, это Political Bot. Ты можешь создать свою страну и в дальнейшем управлять ею. Ты можешь: начинать войну за города, создавать свои войска, открывать новые города и так далее. Ниже у тебя появилась клавиатура, используй её для выполнения каких-то действий.', keyboard)
                if povtor_bd(id) == 0:
                    add_bd(id)
            
            ## КОМАНДЫ
            ##if user.city != None:
                if msg in ['⬅ Главное меню', '!меню']:
                    ##if user.city != None:
                        keyboard = VkKeyboard(one_time=False)
                        keyboard.add_button('🤖 Информация о боте', VkKeyboardColor.PRIMARY)
                        keyboard.add_line()
                        keyboard.add_button('🚩 Управление страной', VkKeyboardColor.PRIMARY)
                        keyboard.add_button('💲 Казна страны', VkKeyboardColor.PRIMARY)
                        keyboard.add_line()
                        keyboard.add_button('📋 Статистика страны', VkKeyboardColor.PRIMARY)
                        keyboard.add_button('🏙 Города страны', VkKeyboardColor.PRIMARY)
                        keyboard.add_line()
                        keyboard.add_button('🏪 Магазин улучшений/плюшек', VkKeyboardColor.PRIMARY)
                        send(id, 'Вы попали в главное меню', keyboard)
                    ##else:
                        ##send(id, '❌ | Создайте страну! (!начать)')

                ##if msg in ['💲 Казна страны', '!казна']:
                    ##send(id, f'💲 Казна страны {user.city} составляет: {user.money} коинов.')

            if msg == '🚩Создать страну':
                for i in range(len(data)):
                    if data[str(id)]['city'] == None and id == data[i]:
                        send(id, 'Введите название вашей страны:')
                        strana = True
                    else:
                        send(id, 'У вас уже есть страна!')

            if strana:
                if msg != '🚩Создать страну':
                    data[str(id)]['city'] = msg
                    keyboard = VkKeyboard(one_time=False)
                    keyboard.add_button('⬅ Главное меню', VkKeyboardColor.NEGATIVE)
                    send(id, f'Вы создали страну: {data.city}', keyboard)
                    strana = False

Крч, есть код для бота вк. Когда создаёшь страну, то ты должен добавиться в блокнот, тем самым быть в мини-базе данных. Я делаю проверку на наличие страны, но после сообщения ничего не вылазит. В чём проблема? (прошу не осбирайте за говнокод, я первый раз пишу бота на питоне)
 

laiser

Известный
184
90
1. Как написал человек, лучше начни с vkbottle, она ассинхронная(но не обязательно, vk-api тоже норм).
2. Блокнот? Ты серьезно? Начни хотябы использовать sqlite3, это база данных, быстрое сохранение и быстрая проверка пользователя по базе.
3. В файл записывать лучше так: Он сам откроет и закроет файл
Python:
def add_bd(user_id):
    with open('data.txt', 'a', encoding='utf-8') as file:
        file.write(f'{user_id}\n')
    data.append({
        user_id: {'city': None, 'money': 0},
    })
 
  • Нравится
Реакции: Sanchez.