Задать вопрос
@theahks

Как создать проверку на id из текстового файла?

Я пытался сделать это вот таким способом, но он не работает.

def checkban():
    while True:
            for event in longpoll.listen():
                try:
                    if event.from_chat == True and event.from_me == False:
                        
                        dey = event.message.action['type']
                        invite_id = event.message.action['member_id']
                        dey = ''
                        invite_id = -100

                        if dey == 'chat_ivite_user':

                            with open("banlist.txt", "a") as CheckBanUsers:
                                id = CheckBanUsers.readlines()

                            if int(invite_id) in id:

                                send(event.chat_id, "⚠ Вы в блокировке.")
                                vk_session.method("messages.removeChatUser", {"chat_id": event.chat_id, "user_id": event.user_id})

                except Exception as error:
                    print(error)
  • Вопрос задан
  • 160 просмотров
Подписаться 1 Средний Комментировать
Пригласить эксперта
Ответы на вопрос 2
SoreMix
@SoreMix Куратор тега Python
yellow
with open("banlist.txt", "a") as CheckBanUsers:
    id = CheckBanUsers.readlines()


Почему файл с флагом a открыт, если нужно прочитать с него что-то?

Ну и следует подумать над наименованием переменных. В переменную id вы получили не чей-то id, а список строк из файла.

Файл лучше прочитать по другому, потому что readlines оставит символы переноса строк

Ну и к числовому типу ваш id не приводить (скорее всего он и так число, если уж на то), из файла вы можете прочитать только строки. Число никогда не будет равно строке

with open("banlist.txt", "r") as CheckBanUsers:
    banned_ids = f.read().splitlines()

if str(invite_id) in banned_ids:
Ответ написан
Комментировать
AlexNest
@AlexNest Куратор тега Python
Работаю с Python/Django
Ну, для начала - зачем приводить invite_id к числовому типу? readlines возвращает массив строк вида:
['1212\n', '12323\n', '3434']
А in работает либо на точное совпадение (числа), либо на вхождение (строки),
(пусть поправят, если неправ)
Простой пример:
# db.txt
1212
12323
3434
# main.py
with open ('db.txt', 'r', encoding='UTF-8') as file:
    lines = file.readlines()
    if str(3434) in lines:
        print('ok')
    else:
        print(lines)
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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