HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > Общие вопросы программирования
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 26.03.2022, 00:19
Sanchez.
Постоянный
Регистрация: 18.04.2021
Сообщений: 704
С нами: 2670862

Репутация: 48


По умолчанию

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


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

  #2  
Старый 27.03.2022, 13:46
laiser
Участник форума
Регистрация: 21.12.2013
Сообщений: 181
С нами: 6522707

Репутация: 83
По умолчанию

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
}
,
}
)
 
Ответить с цитированием
Ответ



Предыдущая тема Следующая тема

Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.