Проблема с сложением в создании Телеграмм Бота

RealVlad

Новичок
Пользователь
Мар 13, 2023
3
0
1
Система - Windows
Версия Python - 3.10.9
pip list -
altgraph 0.17.3
backcall 0.2.0
certifi 2022.12.7
charset-normalizer 2.1.1
decorator 5.1.1
docutils 0.19
entrypoints 0.4
executing 1.2.0
freegames 2.5.3
future 0.18.3
idna 3.4
javascript 1!1.0.0
keyboard 0.13.5
mouse 0.7.1
nest-asyncio 1.5.6
packaging 23.0
parso 0.8.3
pefile 2022.5.30
pickleshare 0.7.5
platformdirs 2.6.2
prompt-toolkit 3.0.36
psutil 5.9.4
pure-eval 0.2.2
PyAudio 0.2.13
pygame 2.1.2
Pygments 2.14.0
pyinstaller 5.7.0
pyinstaller-hooks-contrib 2022.15
pypiwin32 223
pyTelegramBotAPI 4.9.0
pywin32 305
pywin32-ctypes 0.2.0
pyzmq 25.0.0
requests 2.28.1
six 1.16.0
SpeechRecognition 3.9.0
tornado 6.2
traitlets 5.8.1
urllib3 1.26.13
wcwidth 0.2.6


Использую в коде:
import config
import telebot
import time
import random
import sqlite3
import os
import math
from telebot import types

@bot.callback_query_handler(func = lambda call: True)
def t_f(call):
if call.data == "yes":
global p
bot.send_message(call.message.chat.id, "спасибо за оценку 😁", reply_markup=types.ReplyKeyboardRemove())
u = call.message.from_user.id
file = open(f'users/{call.message.chat.id}/good.txt', 'w+', encoding='utf-8')
j = file.readline()
print(j) #1
j += 1
print(j) #2
file.write(f"{j}")
file.close()
elif call.data == "no":
pass
Ошибка которую выдаёт:
j += 1
TypeError: can only concatenate str (not "int") to str


В чём заключается смысл кода:
при нажатии на кнопку код переходит к if call.data == "yes": и всему что идёт до file.close() .
Код открывает .txt файл берёт от туда число (0) и добавляет к нему 1 и обратно записывает в файл.

полный код прикреплю в файлах (bot.txt)
Надеюсь на вашу помощь .
 

Вложения

  • bot.txt
    5 КБ · Просмотры: 0

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 650
472
83
Код открывает .txt файл берёт от туда число (0)
в файле не может быть число

в ошибке сказано, что строку нельзя сложить с интом
приведите строку к инту
int(j) += 1

PS
вы сразу с ботов начали? без изучения питона?
 

RealVlad

Новичок
Пользователь
Мар 13, 2023
3
0
1
в файле не может быть число

в ошибке сказано, что строку нельзя сложить с интом
приведите строку к инту
int(j) += 1

PS
вы сразу с ботов начали? без изучения питона?
Здравствуйте, я изучал python , но не активно. Активно вошел в дело только когда узнал и попробовал бота-писательство.
По поводу того что вы предложили (int(j) += 1) к сожалению тоже не помогло.
Код не хочет приводить оператор J Равный 0 к инту :( Код выдаёт ту же самую ошибку. Попробовал разные способы но код слегка изменился.
Изменённые строки напишу чуть ниже.

@bot.callback_query_handler(func = lambda call: True)
def t_f(call):
if call.data == "yes":

bot.send_message(call.message.chat.id, "спасибо за оценку 😁", reply_markup=types.ReplyKeyboardRemove())
u = call.message.from_user.id
file = open(f"users/{call.message.chat.id}/good.txt", "r", encoding='utf-8') #получение числа из бд.
j = file.readline() #конвентируем символы из документа в оператор
file.close()
print(j) #проверка правильно ли выводит оператор
time.sleep(4)
int(j) += 1 #строка где возникает ошибка
time.sleep(4)
file = open(f"users/{call.message.chat.id}/good.txt", "w", encoding='utf-8') #открытие блокнота для вписывания получившегося числа.
file.write(j)
file.close()
 

RealVlad

Новичок
Пользователь
Мар 13, 2023
3
0
1
Наконец-то нашел решение проблемы ! Без Int'а некуда )

В строке j = file.readline()
добавил int
j = int(file.readline())

Весь код заработал на отлично !
спасибо regnor за идею <3
 

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