Бот Телеграм по работе с базой данных!

popkatop

Участник
Автор темы
39
3
Вообщем,ребят,хочу задать вопрос с базой данных я вопрос вроде решил,появился новый:
Я создал фунцию:
туда занес проверку на if,elif,els,но вот в чем не задача,когда пользоватлель вводит любой другой текст,конечно же логично выдаеться текст с блока if,elif,else
(вернее с функции else) в чем заключаеться сам вопрос,можно ли сдеалать проверку на @Example или же на функцию /comanda(что бы по команде активаировался блок if,elif,else) и так же останавливался,когда пользователь ввел другую команду за ранее спасибо
Код:
import telebot
from telebot import types

token = "token"
bot = telebot.TeleBot(token)

@bot.message_handler(commands=["start"])
def start(message):
send_mess = f"<b>{message.from_user.first_name} {message.from_user.last_name}</b>"
bot.send_message(message.chat.id, f"<b>Приветствую,</b>" + send_mess, parse_mode='html')
bot.send_message(message.chat.id,
f"<b>выберите одну из команд!</b>",
parse_mode='html')


@bot.message_handler(content_types=['text'])
def hendle_text(message):
if message.text == "@proverka_kart":
bot.send_message(message.chat.id, "Good,right autor")
elif message.text == "@example1":
bot.send_message(message.chat.id, "Good,right autor")
elif message.text == "@example2":
bot.send_message(message.chat.id, "Good,right autor")
elif message.text == "@example3":
bot.send_message(message.chat.id, "Good,right autor")
elif message.text == "@example4":
bot.send_message(message.chat.id, "Good, right autor")
elif message.text == "@example5":
bot.send_message(message.chat.id, "Good,right autor")
else:
bot.send_message(message.chat.id, "Warinig:Кидала!")


bot.polling(none_stop=True, interval=0)
 
Последнее редактирование:

ГОХА | GoxaShow

В АРМИИ С 12.12,ЗАКАЗЫ НЕ ДЕЛАЮ,ТУПЫЕ ВОПРОСЫ-НАХУ
Проверенный
1,862
1,864
используй массив проверенных, по надобности добавляй в него людей, а чтобы проверить, есть ли в нём человек, то получаешь с текста сообщения @чела, которого ввели, а после уже проверяешь вот так : if name in provers: (name - @чела, provers - массив с проверенными)
 
  • Нравится
Реакции: popkatop

Josski Molodoi

Активный
182
85
Создаёшь пост на pastebin.com, перед этим авторизировавшись, чтобы иметь возможность добавлять/удалять пользователей.

Далее парсишь raw тест вот таким образом:
Python:
"""
НЕ ТАК:
response = requests.get('https://pastebin.com/uyH3Ab7').text.replace('\n', '')
"""

"""
А ВОТ ТАК:
"""
response = requests.get('https://pastebin.com/raw/uyH3Ab7').text.replace('\n', '')

После парсинга получаешь список всех пользователей в этом посте, который ты создал их туда.
Проверяешь наличие того или иного в этом списке и делаешь что тебе нужно.
Полный код:
Python:
import requests
from bs4 import BeautifulSoup

response = requests.get('https://pastebin.com/raw/uyH3Ab7').text.replace('\n', '')
content = response.split('\r')

if '@somebody' in content:
    pass
    """
    Убираешь pass.
    Пишешь что нужно сделать при наличии пользователя @somebody.
    """
 
  • Нравится
Реакции: laiser

laiser

Известный
184
90
Создаёшь пост на pastebin.com, перед этим авторизировавшись, чтобы иметь возможность добавлять/удалять пользователей.

Далее парсишь raw тест вот таким образом:
Python:
"""
НЕ ТАК:
response = requests.get('https://pastebin.com/uyH3Ab7').text.replace('\n', '')
"""

"""
А ВОТ ТАК:
"""
response = requests.get('https://pastebin.com/raw/uyH3Ab7').text.replace('\n', '')

После парсинга получаешь список всех пользователей в этом посте, который ты создал их туда.
Проверяешь наличие того или иного в этом списке и делаешь что тебе нужно.
Полный код:
Python:
import requests
from bs4 import BeautifulSoup

response = requests.get('https://pastebin.com/raw/uyH3Ab7').text.replace('\n', '')
content = response.split('\r')

if '@somebody' in content:
    pass
    """
    Убираешь pass.
    Пишешь что нужно сделать при наличии пользователя @somebody.
    """
Интересная замена базы данных.
Но много касяков:
1. Рандомный чел может зайти по ссылке, скопировать юзеров и сделать такого же бота. А если там что-то важнее просто логинов?
2. В любой момент админы могут удалить твою запись, не в этом году, так в следующем.
3. И самое главное, это скорость. Если сразу 100 человек запросят проверку, то сервак загется
 
  • Нравится
Реакции: Josski Molodoi

Josski Molodoi

Активный
182
85
Интересная замена базы данных.
Но много касяков:
1. Рандомный чел может зайти по ссылке, скопировать юзеров и сделать такого же бота. А если там что-то важнее просто логинов?
2. В любой момент админы могут удалить твою запись, не в этом году, так в следующем.
3. И самое главное, это скорость. Если сразу 100 человек запросят проверку, то сервак загется
Согласен только с первым утверждением насчет того, что другой человек сможет зайти в этот пост.
Насчёт удаления не имею никакой инфы, поэтому не могу быть согласен, и насчёт скорости тоже.

Лучше конечно через SQL, но умники с бластхака ссылаются на "всем ясный и понятный ютуб", поэтому я так и не разобрался как юзать БД в онлайне.
 

popkatop

Участник
Автор темы
39
3
Вообщем,ребят,хочу задать вопрос с базой данных я вопрос вроде решил,появился новый:
Я создал фунцию:
туда занес проверку на if,elif,els,но вот в чем не задача,когда пользоватлель вводит любой другой текст,конечно же логично выдаеться текст с блока if,elif,else
(вернее с функции else) в чем заключаеться сам вопрос,можно ли сдеалать проверку на @Example или же на функцию /comanda(что бы по команде активаировался блок if,elif,else) и так же останавливался,когда пользователь ввел другую команду за ранее спасибо
Код:

import telebot
from telebot import types

token = "token"
bot = telebot.TeleBot(token)

@bot.message_handler(commands=["start"])
def start(message):
send_mess = f"<b>{message.from_user.first_name} {message.from_user.last_name}</b>"
bot.send_message(message.chat.id, f"<b>Приветствую,</b>" + send_mess, parse_mode='html')
bot.send_message(message.chat.id,
f"<b>выберите одну из команд!</b>",
parse_mode='html')


@bot.message_handler(content_types=['text'])
def hendle_text(message):
if message.text == "@proverka_kart":
bot.send_message(message.chat.id, "Good,right autor")
elif message.text == "@example1":
bot.send_message(message.chat.id, "Good,right autor")
elif message.text == "@example2":
bot.send_message(message.chat.id, "Good,right autor")
elif message.text == "@example3":
bot.send_message(message.chat.id, "Good,right autor")
elif message.text == "@example4":
bot.send_message(message.chat.id, "Good, right autor")
elif message.text == "@example5":
bot.send_message(message.chat.id, "Good,right autor")
else:
bot.send_message(message.chat.id, "Warinig:Кидала!")


bot.polling(none_stop=True, interval=0)
 

laiser

Известный
184
90
Вообщем,ребят,хочу задать вопрос с базой данных я вопрос вроде решил,появился новый:
Я создал фунцию:
туда занес проверку на if,elif,els,но вот в чем не задача,когда пользоватлель вводит любой другой текст,конечно же логично выдаеться текст с блока if,elif,else
(вернее с функции else) в чем заключаеться сам вопрос,можно ли сдеалать проверку на @Example или же на функцию /comanda(что бы по команде активаировался блок if,elif,else) и так же останавливался,когда пользователь ввел другую команду за ранее спасибо
Код:

import telebot
from telebot import types

token = "token"
bot = telebot.TeleBot(token)

@bot.message_handler(commands=["start"])
def start(message):
send_mess = f"<b>{message.from_user.first_name} {message.from_user.last_name}</b>"
bot.send_message(message.chat.id, f"<b>Приветствую,</b>" + send_mess, parse_mode='html')
bot.send_message(message.chat.id,
f"<b>выберите одну из команд!</b>",
parse_mode='html')


@bot.message_handler(content_types=['text'])
def hendle_text(message):
if message.text == "@proverka_kart":
bot.send_message(message.chat.id, "Good,right autor")
elif message.text == "@example1":
bot.send_message(message.chat.id, "Good,right autor")
elif message.text == "@example2":
bot.send_message(message.chat.id, "Good,right autor")
elif message.text == "@example3":
bot.send_message(message.chat.id, "Good,right autor")
elif message.text == "@example4":
bot.send_message(message.chat.id, "Good, right autor")
elif message.text == "@example5":
bot.send_message(message.chat.id, "Good,right autor")
else:
bot.send_message(message.chat.id, "Warinig:Кидала!")


bot.polling(none_stop=True, interval=0)
Я конечно плохо знаю telebot, и не совсем понятен вопрос.

Код:
@bot.message_handler(content_types=['text'])
def hendle_text(message):
    if message.text == "@proverka_kart":
        bot.send_message(message.chat.id, "Good,right autor")
    elif message.text == "[USER=235909]@example1[/USER]":
        bot.send_message(message.chat.id, "Good,right autor")
    elif message.text == "@example2":
        bot.send_message(message.chat.id, "Good,right autor")
    elif message.text == "@example3":
        bot.send_message(message.chat.id, "Good,right autor")
    elif message.text == "@example4":
        bot.send_message(message.chat.id, "Good, right autor")
    elif message.text == "@example5":
        bot.send_message(message.chat.id, "Good,right autor")
    elif message.text == "@example6":
        bot.send_message(message.chat.id, "Warinig:Кидала!")
    else:
        bot.send_message(message.chat.id, "Нет такой команды")
 

popkatop

Участник
Автор темы
39
3
Я конечно плохо знаю telebot, и не совсем понятен вопрос.

Код:
@bot.message_handler(content_types=['text'])
def hendle_text(message):
    if message.text == "@proverka_kart":
        bot.send_message(message.chat.id, "Good,right autor")
    elif message.text == "[USER=235909]@example1[/USER]":
        bot.send_message(message.chat.id, "Good,right autor")
    elif message.text == "@example2":
        bot.send_message(message.chat.id, "Good,right autor")
    elif message.text == "@example3":
        bot.send_message(message.chat.id, "Good,right autor")
    elif message.text == "@example4":
        bot.send_message(message.chat.id, "Good, right autor")
    elif message.text == "@example5":
        bot.send_message(message.chat.id, "Good,right autor")
    elif message.text == "@example6":
        bot.send_message(message.chat.id, "Warinig:Кидала!")
    else:
        bot.send_message(message.chat.id, "Нет такой команды")
не совсем то,смотри логика в чем,нужно что бы если сообщения который ввел пользователь="@Имя" то буед выполняться блок с иф и елс,но если пользователь ввел любой другой текст:то будет писать "не известная команда
"
 

laiser

Известный
184
90
Код:
@bot.message_handler(content_types=['text'])
def hendle_text(message):
    if "@" in message.text:
        if message.text == "@proverka_kart":
            bot.send_message(message.chat.id, "Good,right autor")
        elif message.text == "[USER=235909]@example1[/USER]":
            bot.send_message(message.chat.id, "Good,right autor")
        elif message.text == "@example2":
            bot.send_message(message.chat.id, "Good,right autor")
        elif message.text == "@example3":
            bot.send_message(message.chat.id, "Good,right autor")
        elif message.text == "@example4":
            bot.send_message(message.chat.id, "Good, right autor")
        else message.text == "@example5":
            bot.send_message(message.chat.id, "Good,right autor")
    else:
        bot.send_message(message.chat.id, "Нет такой команды")
 
  • Нравится
Реакции: popkatop

popkatop

Участник
Автор темы
39
3
Код:
@bot.message_handler(content_types=['text'])
def hendle_text(message):
    if "@" in message.text:
        if message.text == "@proverka_kart":
            bot.send_message(message.chat.id, "Good,right autor")
        elif message.text == "[USER=235909]@example1[/USER]":
            bot.send_message(message.chat.id, "Good,right autor")
        elif message.text == "@example2":
            bot.send_message(message.chat.id, "Good,right autor")
        elif message.text == "@example3":
            bot.send_message(message.chat.id, "Good,right autor")
        elif message.text == "@example4":
            bot.send_message(message.chat.id, "Good, right autor")
        else message.text == "@example5":
            bot.send_message(message.chat.id, "Good,right autor")
    else:
        bot.send_message(message.chat.id, "Нет такой команды")
Топ

Новая проблема,я не могу заставить работать функцию bot.register_next_step_handler() в чем логика спускаемся до этой строчки "# if "@" in message.text:",
точнее комента так проще орентироваться,там идет проверка на тег,тоесть если сообщения без тега,выполняеться заявленый елс,но если сообщения с тегом прыжок на фукнцию "hendle_text1" где уже есть логика иф,елс и елиф,подcкажите что не правильно возможно как то по другому прыжок можна реализовать.
import telebot from telebot import types token = "2021824097:AAGF1owRp8RdoK8Mnd6ocJJ9Lx8KGC1LWX0" bot = telebot.TeleBot(token) @bot.message_handler(commands=["start"]) def start(message): send_mess = f"<b>{message.from_user.first_name} {message.from_user.last_name}</b>" bot.send_message(message.chat.id, f"<b>Приветствую,</b>" + send_mess, parse_mode='html') bot.send_message(message.chat.id, f"<b>выберите одну из команд!</b>", parse_mode='html') user_markup = telebot.types.ReplyKeyboardMarkup(True) user_markup.row('/start', '/authors', '/tegproverka') user_markup.row('/rules', '/proverka_kart', ) bot.send_message(message.chat.id, f"<b>:</b>", parse_mode='html', reply_markup=user_markup) @bot.message_handler(commands=['authors']) def telegram(message): markup = types.InlineKeyboardMarkup() markup.add(types.InlineKeyboardButton("Список авторов", url="www.google.com.ua")) bot.send_message(message.chat.id, "<b>Держи,перейди по кнопке и выбери проверенного автора!</b> ", parse_mode='html', reply_markup=markup) @bot.message_handler(commands=['rules']) def telegram(message): markup = types.InlineKeyboardMarkup() markup.add(types.InlineKeyboardButton("Правила группы", url="www.google.com.ua")) bot.send_message(message.chat.id, "<b>Держи,перейди по кнопке и посмотри правила группы!</b> ", parse_mode='html', reply_markup=markup) @bot.message_handler(commands=['tegproverka']) def telegram(message): bot.send_message(message.chat.id, f"<b>Приветвую,тут вы можете проверить тег исполнителя для проверки введите эго тег." f"Пример ниже:</b>", parse_mode='html') bot.send_message(message.chat.id, "<b>формат ввода @example</b> ", parse_mode='html') @bot.message_handler(commands=['proverka_kart']) def telegram(message): markup = types.InlineKeyboardMarkup() markup.add(types.InlineKeyboardButton("Бот-проверки карт", url="www.google.com.ua")) bot.send_message(message.chat.id, "<b>Держи,перейди по кнопке и воспользуйся ботом для проверки карточек!</b> ", parse_mode='html', reply_markup=markup) # if "@" in message.text: @bot.message_handler(content_types=['text']) def hendle_text(message): if "@" in message.text: bot.register_next_step_handler(message, hendle1_text) else: bot.send_message(message.chat.id, "пиздеу") @bot.message_handler(content_types=['text']) def hendle1_text(message): if message.text == "@proverka_kart": bot.send_message(message.chat.id, "Good,right autor") elif message.text == "[USER=235909]@example1[/USER]": bot.send_message(message.chat.id, "Good,right autor") elif message.text == "@example2": bot.send_message(message.chat.id, "Good,right autor") elif message.text == "@example3": bot.send_message(message.chat.id, "Good,right autor") elif message.text == "@example4": bot.send_message(message.chat.id, "Good, right autor") elif message.text == "@example5": bot.send_message(message.chat.id, "Good,right autor") elif message.text == "@example6": bot.send_message(message.chat.id, "Warinig:Кидала!") else: bot.send_message(message.chat.id, "Нет такой команды") bot.polling(none_stop=True, interval=0)

используй массив проверенных, по надобности добавляй в него людей, а чтобы проверить, есть ли в нём человек, то получаешь с текста сообщения @чела, которого ввели, а после уже проверяешь вот так : if name in provers: (name - @чела, provers - массив с проверенными)
вроде сделал как вы говориил но все равно вот такой прикол
 
Последнее редактирование:

laiser

Известный
184
90
Как я писал выше, я не шарю в telebot, но я умею пользоваться гуглом, что и тебе советую начиться, а потом уже изучать программирование.

bot.register_next_step_handler() - Работает не так, как ты думаешь. Он ожидает ответа пользователя и только после этого переводит в функцию hendle1_text
Если тебе уж так сильно хочется использовать такую логику, как ты написал выше, а не мою, то можешь сделать так:
За код не ручаюсь, так как не тестил

Код:
import telebot
from telebot import types

token = ""
bot = telebot.TeleBot(token)


@bot.message_handler(commands=["start"])
def start(message):
    send_mess = f"<b>{message.from_user.first_name}  {message.from_user.last_name}</b>"
    bot.send_message(message.chat.id, f"<b>Приветствую,</b>" + send_mess, parse_mode='html')
    bot.send_message(message.chat.id,
                     f"<b>выберите одну из команд!</b>",
                     parse_mode='html')

    user_markup = telebot.types.ReplyKeyboardMarkup(True)
    user_markup.row('/start', '/authors', '/tegproverka')
    user_markup.row('/rules', '/proverka_kart', )
    bot.send_message(message.chat.id, f"<b>:</b>", parse_mode='html', reply_markup=user_markup)


@bot.message_handler(commands=['authors'])
def telegram(message):
    markup = types.InlineKeyboardMarkup()
    markup.add(types.InlineKeyboardButton("Список  авторов",
                                          url="www.google.com.ua"))
    bot.send_message(message.chat.id, "<b>Держи,перейди по кнопке и выбери проверенного автора!</b> ",
                     parse_mode='html', reply_markup=markup)


@bot.message_handler(commands=['rules'])
def telegram(message):
    markup = types.InlineKeyboardMarkup()
    markup.add(types.InlineKeyboardButton("Правила группы", url="www.google.com.ua"))
    bot.send_message(message.chat.id, "<b>Держи,перейди по кнопке и посмотри правила группы!</b> ",
                     parse_mode='html', reply_markup=markup)


@bot.message_handler(commands=['tegproverka'])
def telegram(message):
    bot.send_message(message.chat.id,
                     f"<b>Приветвую,тут вы можете проверить тег исполнителя для проверки введите эго тег."
                     f"Пример ниже:</b>",
                     parse_mode='html')
    bot.send_message(message.chat.id,
                     "<b>формат ввода @example</b> ",
                     parse_mode='html')


@bot.message_handler(commands=['proverka_kart'])
def telegram(message):
    markup = types.InlineKeyboardMarkup()
    markup.add(types.InlineKeyboardButton("Бот-проверки карт", url="www.google.com.ua"))
    bot.send_message(message.chat.id, "<b>Держи,перейди по кнопке и воспользуйся ботом для проверки карточек!</b> ",
                     parse_mode='html', reply_markup=markup)


#  if "@" in message.text:

@bot.message_handler(content_types=['text'])
def hendle_text(message):
    if "@" in message.text:
        hendle1_text(message) # Переход в функцию hendle1_text
    else:
        bot.send_message(message.chat.id, "пиздеу")


def hendle1_text(message):
    if message.text == "@proverka_kart":
        bot.send_message(message.chat.id, "Good,right autor")
    elif message.text == "[USER=235909]@example1[/USER]":
        bot.send_message(message.chat.id, "Good,right autor")
    elif message.text == "@example2":
        bot.send_message(message.chat.id, "Good,right autor")
    elif message.text == "@example3":
        bot.send_message(message.chat.id, "Good,right autor")
    elif message.text == "@example4":
        bot.send_message(message.chat.id, "Good, right autor")
    elif message.text == "@example5":
        bot.send_message(message.chat.id, "Good,right autor")
    elif message.text == "@example6":
        bot.send_message(message.chat.id, "Warinig:Кидала!")
    else:
        bot.send_message(message.chat.id, "Нет такой команды")


bot.polling(none_stop=True, interval=0)

Не пали свой токен, иногда могут быть последствия
И прячь код в специальный блок [CODE ] [/ CODE]. Имей уважение!
 
  • Нравится
Реакции: popkatop

popkatop

Участник
Автор темы
39
3
Как я писал выше, я не шарю в telebot, но я умею пользоваться гуглом, что и тебе советую начиться, а потом уже изучать программирование.

bot.register_next_step_handler() - Работает не так, как ты думаешь. Он ожидает ответа пользователя и только после этого переводит в функцию hendle1_text
Если тебе уж так сильно хочется использовать такую логику, как ты написал выше, а не мою, то можешь сделать так:
За код не ручаюсь, так как не тестил

Код:
import telebot
from telebot import types

token = ""
bot = telebot.TeleBot(token)


@bot.message_handler(commands=["start"])
def start(message):
    send_mess = f"<b>{message.from_user.first_name}  {message.from_user.last_name}</b>"
    bot.send_message(message.chat.id, f"<b>Приветствую,</b>" + send_mess, parse_mode='html')
    bot.send_message(message.chat.id,
                     f"<b>выберите одну из команд!</b>",
                     parse_mode='html')

    user_markup = telebot.types.ReplyKeyboardMarkup(True)
    user_markup.row('/start', '/authors', '/tegproverka')
    user_markup.row('/rules', '/proverka_kart', )
    bot.send_message(message.chat.id, f"<b>:</b>", parse_mode='html', reply_markup=user_markup)


@bot.message_handler(commands=['authors'])
def telegram(message):
    markup = types.InlineKeyboardMarkup()
    markup.add(types.InlineKeyboardButton("Список  авторов",
                                          url="www.google.com.ua"))
    bot.send_message(message.chat.id, "<b>Держи,перейди по кнопке и выбери проверенного автора!</b> ",
                     parse_mode='html', reply_markup=markup)


@bot.message_handler(commands=['rules'])
def telegram(message):
    markup = types.InlineKeyboardMarkup()
    markup.add(types.InlineKeyboardButton("Правила группы", url="www.google.com.ua"))
    bot.send_message(message.chat.id, "<b>Держи,перейди по кнопке и посмотри правила группы!</b> ",
                     parse_mode='html', reply_markup=markup)


@bot.message_handler(commands=['tegproverka'])
def telegram(message):
    bot.send_message(message.chat.id,
                     f"<b>Приветвую,тут вы можете проверить тег исполнителя для проверки введите эго тег."
                     f"Пример ниже:</b>",
                     parse_mode='html')
    bot.send_message(message.chat.id,
                     "<b>формат ввода @example</b> ",
                     parse_mode='html')


@bot.message_handler(commands=['proverka_kart'])
def telegram(message):
    markup = types.InlineKeyboardMarkup()
    markup.add(types.InlineKeyboardButton("Бот-проверки карт", url="www.google.com.ua"))
    bot.send_message(message.chat.id, "<b>Держи,перейди по кнопке и воспользуйся ботом для проверки карточек!</b> ",
                     parse_mode='html', reply_markup=markup)


#  if "@" in message.text:

@bot.message_handler(content_types=['text'])
def hendle_text(message):
    if "@" in message.text:
        hendle1_text(message) # Переход в функцию hendle1_text
    else:
        bot.send_message(message.chat.id, "пиздеу")


def hendle1_text(message):
    if message.text == "@proverka_kart":
        bot.send_message(message.chat.id, "Good,right autor")
    elif message.text == "[USER=235909]@example1[/USER]":
        bot.send_message(message.chat.id, "Good,right autor")
    elif message.text == "@example2":
        bot.send_message(message.chat.id, "Good,right autor")
    elif message.text == "@example3":
        bot.send_message(message.chat.id, "Good,right autor")
    elif message.text == "@example4":
        bot.send_message(message.chat.id, "Good, right autor")
    elif message.text == "@example5":
        bot.send_message(message.chat.id, "Good,right autor")
    elif message.text == "@example6":
        bot.send_message(message.chat.id, "Warinig:Кидала!")
    else:
        bot.send_message(message.chat.id, "Нет такой команды")


bot.polling(none_stop=True, interval=0)

Не пали свой токен, иногда могут быть последствия
И прячь код в специальный блок [CODE ] [/ CODE]. Имей уважение!
спасибо большое!Именно это мне инужно было!