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

AttributeError: 'NoneType' object has no attribute 'vk_id'

29.08.2022, 15:44. Показов 1272. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ошибка:

AttributeError: 'NoneType' object has no attribute 'vk_id'

Код:

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
import vk_api
from vk_api.bot_longpoll import VkBotEventType, VkBotLongPoll
import utils
from config import *
 
 
class MyLongPool(VkBotLongPoll):
    def listen(self):
        while True:
            try:
                for event in self.check():
                    yield event
            except Exception as e:
                print(e)
 
 
class VkBot:
    def __init__(self):
        self.vk_session = vk_api.VkApi(token=token)
        self.longpoll = VkBotLongPoll(self.vk_session, 214680736)
 
    def run(self):
        for event in self.longpoll.listen():
            if event.type == VkBotEventType.MESSAGE_NEW:
                msg = event.object.message
                user_id = msg['from_id']
                user = utils.get_user_by_id(user_id)
                text = msg['text']
                fwd = self.vk_session.method('messages.getByConversationMessageId', {
                    'conversation_message_ids': msg['conversation_message_id'],
                    'peer_id': msg['peer_id']
                })['items'][0]
 
                if 'reply_message' in fwd:
                    fwd = fwd['reply_message']
                else:
                    fwd = None
 
                if user.vk_id == admin_id:
                    if fwd:
                        if text == '!kick':
                            self.vk_session.method('messages.removeChatUser', {
                                'user_id': fwd['from_id'],
                                'chat_id': msg['peer_id'] - 2000000000
                            })
                        elif text == '!warn':
                            fwd_user = utils.get_user_by_id(['from_id'])
                            fwd_user.warns += 1
                            fwd_user.save()
 
                            user_name = self.vk_session.method('user.get', {'user_id': fwd_user.vk_id})[0]['first_name']
 
                            self.vk_session.method('messages.send', {
                                'chat_id': msg['peer_id'] - 2000000000,
                                'message': f'{user_name}, -!\n- {fwd_user.warns}/5',
                                'random_id': 0
                            })
 
                            if fwd_user.warns >= 5:
                                self.vk_session.method('messages.removeChatUser', {
                                    'user_id': fwd_user.vk_id,
                                    'chat_id': msg['peer_id'] - 2000000000
                                })
                    else:
                        self.vk_session.method('messages.send', {
                            'chat_id': msg['peer_id'] - 2000000000,
                            'message': f'-!',
                            'random_id': 0
                        })
 
 
if __name__ == '__main__':
    VkBot().run()
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
29.08.2022, 15:44
Ответы с готовыми решениями:

AttributeError: 'NoneType' object has no attribute 'id'
@bot.command(pass_context = True) async def createvoicechannels(ctx): role = discord.utils.get(ctx.channel.guild.roles, name =...

AttributeError: 'NoneType' object has no attribute 'index'
import random a = input() al = all = random.shuffle(al) b = al.index(a) m = all.index(a) print(al, jj) вот ошибка: File...

AttributeError: 'NoneType' object has no attribute 'peer_id'
import vk_api from vk_api.bot_longpoll import VkBotLongPoll, VkBotEventType from vk_api.utils import get_random_id def...

4
Модератор
Эксперт Python
 Аватар для Fudthhh
2695 / 1601 / 513
Регистрация: 21.02.2017
Сообщений: 4,210
Записей в блоге: 1
29.08.2022, 15:54
Xindryga, ну функция возвращает None и ты пытаешься взять у несуществующего(не найденного) пользователя "vk_id".
1
0 / 0 / 0
Регистрация: 29.08.2022
Сообщений: 3
29.08.2022, 15:59  [ТС]
Python
1
2
3
4
5
6
7
8
9
10
11
from models import User
 
 
def get_user_by_id(user_id):
    try:
        return User().get(vk_id=user_id)
    except:
        User(
            vk_id=user_id,
            warns=0
        )
Добавлено через 3 минуты
Цитата Сообщение от Fudthhh Посмотреть сообщение
Xindryga, ну функция возвращает None и ты пытаешься взять у несуществующего(не найденного) пользователя "vk_id".
Я не очень силён в этом, сможешь помочь решить данную проблему?
0
Модератор
Эксперт Python
 Аватар для Fudthhh
2695 / 1601 / 513
Регистрация: 21.02.2017
Сообщений: 4,210
Записей в блоге: 1
29.08.2022, 16:05
Xindryga, ну не надо быть особо умным чтоб понять, что в этой строке, нужно указать id пользователя а не список в котором храниться переменная "from_id":
Python
1
utils.get_user_by_id(['from_id'])
0
0 / 0 / 0
Регистрация: 29.08.2022
Сообщений: 3
29.08.2022, 16:34  [ТС]
Цитата Сообщение от Fudthhh Посмотреть сообщение
Xindryga, ну не надо быть особо умным чтоб понять, что в этой строке, нужно указать id пользователя а не список в котором храниться переменная "from_id":
Python
1
utils.get_user_by_id(['from_id'])
Даже с таким условием выдаётся ошибка

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
import vk_api
from vk_api.bot_longpoll import VkBotEventType, VkBotLongPoll
import utils
from config import *
 
 
class MyLongPool(VkBotLongPoll):
    def listen(self):
        while True:
            try:
                for event in self.check():
                    yield event
            except Exception as e:
                print(e)
 
 
class VkBot:
    def __init__(self):
        self.vk_session = vk_api.VkApi(token=token)
        self.longpoll = VkBotLongPoll(self.vk_session, 214680736)
 
    def run(self):
        for event in self.longpoll.listen():
            if event.type == VkBotEventType.MESSAGE_NEW:
                msg = event.object.message
                user_id = msg['from_id']
                user = utils.get_user_by_id(user_id)
                text = msg['text']
                fwd = self.vk_session.method('messages.getByConversationMessageId', {
                    'conversation_message_ids': msg['conversation_message_id'],
                    'peer_id': msg['peer_id']
                })['items'][0]
 
                if 'reply_message' in fwd:
                    fwd = fwd['reply_message']
                else:
                    fwd = None
 
                if user.vk_id == admin_id:
                    if fwd:
                        if text == '!kick':
                            self.vk_session.method('messages.removeChatUser', {
                                'user_id': fwd['from_id'],
                                'chat_id': msg['peer_id'] - 2000000000
                            })
                        elif text == '!warn':
                            #fwd_user = utils.get_user_by_id(fwd['from_id'])
                            #fwd_user.warns += 1
                            #fwd_user.save()
 
                            user_name = self.vk_session.method('users.get', {'user_id': fwd_user.vk_id})
                            print(user_name)
 
                            #self.vk_session.method('messages.send', {
                            #    'chat_id': msg['peer_id'] - 2000000000,
                            #    'message': f'{user_name}, -!\n- {fwd_user.warns}/5',
                            #    'random_id': 0
                            #})
 
 
 
if __name__ == '__main__':
    VkBot().run()

Traceback (most recent call last):
File "...\PycharmProjects\DA\main.py", line 63, in <module>
VkBot().run()
File "...\PycharmProjects\DA\main.py", line 39, in run
if user.vk_id == admin_id:
AttributeError: 'NoneType' object has no attribute 'vk_id'

Добавлено через 20 минут
Сменить решил на:
Python
1
fwd_user = utils.get_user_by_id(fwd['from_id'])
Но строчку кидаю в "#"
И он ругается на:
Python
1
if user.vk_id == admin_id:
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
29.08.2022, 16:34
Помогаю со студенческими работами здесь

ERROR - TeleBot: "AttributeError occurred, args=("'NoneType' object has no attribute 'format'",)
Всем доброго дня! Пишу бота для телеграма, использую pyTelegramBotAPI. Написал простенький код: import telebot from telebot import...

AttributeError: 'OWM' object has no attribute 'weather_at_place'
добрый вечер, форумчане! начал писать код для бота с погодой (тк я новичок то делал все по видео, но мне выдает непонятную ошибку) ...

AttributeError: function object has no attribute 'polling'
import telebot class RobBot: bot = telebot.TeleBot(&quot;&quot;) def bot(bot): @bot.message_handler(commands=) def...

AttributeError: 'OWM' object has no attribute 'weather_at_place'
Здраствуйте помогите скомпилировать код! Я начинающий import telebot import pyowm owm =...

AttributeError: 'TeleBot' object has no attribute 'message_handler'
Команда: import telebot token = ('*Тут мой токен*') bot=telebot.TeleBot (token) @bot.message_handler(commands=) def...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Установка Emscripten SDK (emsdk) и CMake на Windows для сборки C и C++ приложений в WebAssembly (Wasm)
8Observer8 30.01.2026
Чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. Система контроля версиями Git. . .
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru