vkbot_api

Viti2154

Новичок
Пользователь
Сен 9, 2020
4
0
1
мне выдает оошибку import.error:cannot import name "VkLongPoll" from "vk_api.longpoll"
вот код:
import vk_api
from vk_api.longpoll import VkBotLongPoll, VkBotEventType
from toks import main_token

vk_session = vk_api.VkApi(token = '9cef5eca4b95d8994313651028fc6574b31c1eb9a2437edbd0b4a87ea9b7a19db46a6ef6958052e24b8c8')
session_api = vk.session.get_api()
longpoll = Vklongpoll(vk_session)

def sender(text):
vk_session.method('messages.send', {'user_id': id, 'message' : text, 'random_id' : 0})

# Основной цикл
for event in longpoll.listen():

# Если пришло новое сообщение
if event.type == VkEventType.MESSAGE_NEW:

# Если оно имеет метку для меня( то есть бота)
if event.to_me:

# Сообщение от пользователя
request = event.text

# Каменная логика ответа
if request == "привет":
write_msg(event.user_id, "Хай")
elif request == "пока":
write_msg(event.user_id, "Пока((")
else:
write_msg(event.user_id, "Не поняла вашего ответа...")


def write_msg(user_id, message):
vk.method('messages.send', {'user_id': user_id, 'message': message})
token = "9cef5eca4b95d8994313651028fc6574b31c1eb9a2437edbd0b4a87ea9b7a19db46a6ef6958052e24b8c8"
vk = vk_api.VkApi(token=token)



for event in longpoll.listen():
class ChatBot:

def __init__(self, user_id):

print("Создан объект бота!")
self._USER_ID = user_id
self._USERNAME = self._get_user_name_from_vk_id(user_id)

self._COMMANDS = ["ПРИВЕТ", "ПОГОДА", "ВРЕМЯ", "ПОКА"]

def _get_user_name_from_vk_id(self, user_id):
request = requests.get("https://vk.com/id"+str(user_id))
bs = bs4.BeautifulSoup(request.text, "html.parser")

user_name = self._clean_all_tag_from_str(bs.findAll("title")[0])
return user_name.split()[0]
def _get_time(self):
request = requests.get("https://my-calend.ru/date-and-time-today")
b = bs4.BeautifulSoup(request.text, "html.parser")
return self._clean_all_tag_from_str(str(b.select(".page")[0].findAll("h2")[1])).split()[1]

# Получение погоды
def _get_weather(city: str = "пгт.подгоренский") -> list:
request = requests.get("https://sinoptik.com.ru/погода-" + city)
b = bs4.BeautifulSoup(request.text, "html.parser")

p3 = b.select('.temperature .p3')
weather1 = p3[0].getText()
p4 = b.select('.temperature .p4')
weather2 = p4[0].getText()
p5 = b.select('.temperature .p5')
weather3 = p5[0].getText()
p6 = b.select('.temperature .p6')
weather4 = p6[0].getText()
result = ''
result = result + ('Утром :' + weather1 + ' ' + weather2) + '\n'
result = result + ('Днём :' + weather3 + ' ' + weather4) + '\n'
temp = b.select('.rSide .description')
weather = temp[0].getText()
result = result + weather.strip()

return result

# Метод для очистки от ненужных тэгов

@staticmethod
def _clean_all_tag_from_str(string_line):
"""
Очистка строки stringLine от тэгов и их содержимых
:param string_line: Очищаемая строка
:return: очищенная строка
"""
result = ""
not_skip = True
for i in list(string_line):
if not_skip:
if i == "<":
not_skip = False
else:
result += i
else:
if i == ">":
not_skip = True

return result
def new_message(self, message):

# Привет
if message.upper() == self._COMMANDS[0]:
return f"Привет-привет, {self._USERNAME}!"

# Погода
elif message.upper() == self._COMMANDS[1]:
return self._get_weather()

# Время
elif message.upper() == self._COMMANDS[2]:
return self._get_time()

# Пока
elif message.upper() == self._COMMANDS[3]:
return f"Пока-пока, {self._USERNAME}!"

else:
return "Не понимаю о чем вы..."

print("Server started")
for event in longpoll.listen():
if event.type == VkEventType.MESSAGE_NEW:
if event.to_me:

print('New message:')
print(f'For me by: {event.user_id}', end='')

bot = VkBot(event.user_id)
write_msg(event.user_id, bot.new_message(event.text))

print('Text: ', event.text)
 

alext

Популярный
Пользователь
Май 10, 2020
288
66
28
В панели форматирования сообщения три точки - "код". Эту стену без отступов невозможно прочитать и скопировать.
 

Viti2154

Новичок
Пользователь
Сен 9, 2020
4
0
1
В панели форматирования сообщения три точки - "код". Эту стену без отступов невозможно прочитать и скопировать.
Я не понял где именно это,я с инета списал
 

Viti2154

Новичок
Пользователь
Сен 9, 2020
4
0
1
В панели форматирования сообщения три точки - "код". Эту стену без отступов невозможно прочитать и скопировать.
А, я понял
 

Viti2154

Новичок
Пользователь
Сен 9, 2020
4
0
1
Я делал отступы тут так показало
 

Форум IT Специалистов