CREATE TABLE users (
user_id INTEGER PRIMARY KEY # чтобы заполнялся автоматически, тогда вообще не нужно указывать id, он всегда будет проставляться автоматом новый
user_name TEXT);
cur.execute('''INSERT INTO users(user_name) VALUES(?)''', (user_name, ))
CREATE TABLE users (
user_id INTEGER UNIQUE, # если планируется самостоятельно заносить id
user_name TEXT);
cur.execute('''INSERT OR IGNORE INTO users(user_id, user_name) VALUES(?, ?)''', (user_id, user_name))
from pyowm.utils.config import get_default_config
# создаем словарь настроек по умолчанию и в нем уже меняем язык
config_dict = get_default_config()
config_dict['language'] = 'ru'
owm = pyowm.OWM("ключ", config_dict)
getting_api.users.get(user_ids=from_id > 0)[0]
getting_api.users.get(user_ids=True)[0]
@bot.message_handler(commands = ['info'])
def send_info(message):
bot.send_message(message.chat.id, f'data={data}')
cursor.execute("INSERT INTO users VALUES (?, ?, 52, 0, 0, 0, 0, ?)", (member.name, member.id, member.guild.id))
states = {"kb":None}
def ... клавиатура1
keyboard = telebot.types.ReplyKeyboardMarkup(resize_keyboard=True)
button1 = telebot.types.KeyboardButton(f'Да')
button2 = telebot.types.KeyboardButton(f'Нет')
keyboard.row(button1, button2)
states["kb"] = "kb1"
bot.send_message(message.chat.id, message, reply_markup=keyboard)
def ... клавиатура2
keyboard = telebot.types.ReplyKeyboardMarkup(resize_keyboard=True)
button1 = telebot.types.KeyboardButton(f'Да')
button2 = telebot.types.KeyboardButton(f'Нет')
keyboard.row(button1, button2)
states["kb"] = "kb2"
bot.send_message(message.chat.id, message, reply_markup=keyboard)
@bot.message_handler(content_types=['text'])
def echo_text(message):
if states["kb"] == "kb1":
if message.text == 'Да':
elif states["kb"] == "kb2":
if message.text == 'Да':
@bot.message_handler(content_types=['document'])
def get_file(message):
file_name = message.document.file_name
file_info = bot.get_file(message.document.file_id)
with open(file_name, "wb") as f:
file_content = bot.download_file(file_info.file_path)
f.write(file_content)
bot.reply_to(message, f"OK. Сохранил {file_name}")
@bot.message_handler(content_types=['video'])
def get_file(message):
file_name = message.json['video']['file_name']
file_info = bot.get_file(message.video.file_id)
with open(file_name, "wb") as f:
file_content = bot.download_file(file_info.file_path)
f.write(file_content)
bot.reply_to(message, f"OK. Сохранил {file_name}")
if set(white_list_roles) & set(message.author.roles):
# я админ, могу ругаться
else:
# я холоп, ругаться нельзя
if any(bad_word in message.content for bad_word in black_list):
await message.delete()
bot.send_message(message.chat.id, 'Введите текст')
bot.register_next_step_handler(message, get_text)
def get_text(message):
message.text будет как раз запрашиваемый текст
@bot.message_handler(commands=['weather'])
def start(message):
if ' ' in message.text:
place = message.text.split(maxsplit=1)[1]
# работаем с нашим place
else:
bot.send_message(message.chat.id, 'Укажите город')
from pyowm.owm import OWM
from pyowm.utils.config import get_default_config
import telebot
TOKEN = токен телеграм
OWM_KEY = API ключ OWM
config_dict = get_default_config()
config_dict['language'] = 'ru'
bot = telebot.TeleBot(TOKEN)
def get_weather(location):
try:
owm = OWM(OWM_KEY, config_dict)
mgr = owm.weather_manager()
observation = mgr.weather_at_place(location)
w = observation.weather
temp = w.temperature('celsius')["temp"]
answer = answer = f"В городе {location} сейчас {w.detailed_status}\n"
answer += " Температура сейчас в районе "+ str(temp) + "\n\n"
if temp < 5:
answer += "Сейчас ОЧЕНЬ ХОЛОДНО!"
elif temp < 10:
answer += "Сейчас холодно, одевайся!"
elif temp < 20:
answer += "Температура средняя,оденься потеплее!"
else:
answer += "Температура нормальная, одевайcя как хочешь!"
except Exception as e:
print('Error:', e)
answer = 'Ошибка такая-то' # или любой другой, на случай неправильного города
return answer
# что под функцией с ошибкой подразумевалось не понятно, но допустим так
def do_something_erronous():
1/0
@bot.message_handler(content_types=['text'])
def send_echo(message):
# логику работы с OWM переносим в отдельную функцию
# запрашиваем текст о погоде в указанном городе
answer = get_weather(message.text)
bot.send_message(message.chat.id, answer)
# что осталось от изначального блока исключений, если он Вам еще зачем-то нужен
try:
do_something_erronous()
except Exception as e:
print('Error:', e)
bot.polling(none_stop=True)
for row in cursor.execute(...).fetchall():
if 'гну' in event.object.text.lower():
words = ['гну', 'сгиб']
if any(word in event.object.text.lower() for word in words):