PDA

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


popkatop
18.10.2021, 02:30
Вообщем,ребят,хочу задать вопрос с базой данных я вопрос вроде решил,появился новый:

Я создал фунцию:

туда занес проверку на if,elif,els,но вот в чем не задача,когда пользоватлель вводит любой другой текст,конечно же логично выдаеться текст с блока if,elif,else

(вернее с функции else) в чем заключаеться сам вопрос,можно ли сдеалать проверку на @Example (https://forum.antichat.xyz/members/2252189/) или же на функцию /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"{message.from_user.first_name} {message.from_user.last_name}"

bot.send_message(message.chat.id, f"Приветствую," + send_mess, parse_mode='html')

bot.send_message(message.chat.id,

f"выберите одну из команд!",

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 (https://forum.antichat.xyz/members/2155909/)":

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
18.10.2021, 09:12
используй массив проверенных, по надобности добавляй в него людей, а чтобы проверить, есть ли в нём человек, то получаешь с текста сообщения @чела, которого ввели, а после уже проверяешь вот так : if name in provers: (name - @чела, provers - массив с проверенными)

pomidorq
20.10.2021, 12:31
Создаёшь пост на 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
20.10.2021, 15:28
Создаёшь пост на 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 человек запросят проверку, то сервак загется

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


Согласен только с первым утверждением насчет того, что другой человек сможет зайти в этот пост.

Насчёт удаления не имею никакой инфы, поэтому не могу быть согласен, и насчёт скорости тоже.

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

popkatop
30.10.2021, 15:38
Вообщем,ребят,хочу задать вопрос с базой данных я вопрос вроде решил,появился новый:

Я создал фунцию:

туда занес проверку на if,elif,els,но вот в чем не задача,когда пользоватлель вводит любой другой текст,конечно же логично выдаеться текст с блока if,elif,else

(вернее с функции else) в чем заключаеться сам вопрос,можно ли сдеалать проверку на @Example (https://forum.antichat.xyz/members/2252189/) или же на функцию /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"{message.from_user.first_name} {message.from_user.last_name}"

bot.send_message(message.chat.id, f"Приветствую," + send_mess, parse_mode='html')

bot.send_message(message.chat.id,

f"выберите одну из команд!",

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 (https://forum.antichat.xyz/members/2155909/)":

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
30.10.2021, 21:50
Вообщем,ребят,хочу задать вопрос с базой данных я вопрос вроде решил,появился новый:

Я создал фунцию:

туда занес проверку на if,elif,els,но вот в чем не задача,когда пользоватлель вводит любой другой текст,конечно же логично выдаеться текст с блока if,elif,else

(вернее с функции else) в чем заключаеться сам вопрос,можно ли сдеалать проверку на @Example (https://forum.antichat.xyz/members/2252189/) или же на функцию /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"{message.from_user.first_name} {message.from_user.last_name}"
bot.send_message(message.chat.id, f"Приветствую," + send_mess, parse_mode='html')
bot.send_message(message.chat.id,
f"выберите одну из команд!",
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 (https://forum.antichat.xyz/members/2155909/)":
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 == "@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")
elif message.text == "@example6":
bot.send_message(message.chat.id, "Warinig:Кидала!")
else:
bot.send_message(message.chat.id, "Нет такой команды")

popkatop
30.10.2021, 22:40
Я конечно плохо знаю 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 == "@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")
elif message.text == "@example6":
bot.send_message(message.chat.id, "Warinig:Кидала!")
else:
bot.send_message(message.chat.id, "Нет такой команды")





не совсем то,смотри логика в чем,нужно что бы если сообщения который ввел пользователь="@Имя (https://forum.antichat.xyz/members/2238513/)" то буед выполняться блок с иф и елс,но если пользователь ввел любой другой текст:то будет писать "не известная команда

"

laiser
31.10.2021, 14:28
Код:






@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 == "@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")
else message.text == "@example5":
bot.send_message(message.chat.id, "Good,right autor")
else:
bot.send_message(message.chat.id, "Нет такой команды")

popkatop
01.11.2021, 16:10
Код:






@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 == "@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")
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"{message.from_user.first_name} {message.from_user.last_name}"
bot.send_message(message.chat.id, f"Приветствую," + send_mess, parse_mode='html')
bot.send_message(message.chat.id,
f"выберите одну из команд!",
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":", 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, "Держи,перейди по кнопке и выбери проверенного автора! ",
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, "Держи,перейди по кнопке и посмотри правила группы! ",
parse_mode='html', reply_markup=markup)

@bot.message_handler(commands=['tegproverka'])
def telegram(message):
bot.send_message(message.chat.id,
f"Приветвую,тут вы можете проверить тег исполнителя для проверки введите эго тег."
f"Пример ниже:",
parse_mode='html')
bot.send_message(message.chat.id,
"формат ввода @example ",
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, "Держи,перейди по кнопке и воспользуйся ботом для проверки карточек! ",
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 == "@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")
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
01.11.2021, 20:43
Как я писал выше, я не шарю в 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"{message.from_user.first_name} {message.from_user.last_name}"
bot.send_message(message.chat.id, f"Приветствую," + send_mess, parse_mode='html')
bot.send_message(message.chat.id,
f"выберите одну из команд!",
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":", 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, "Держи,перейди по кнопке и выбери проверенного автора! ",
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, "Держи,перейди по кнопке и посмотри правила группы! ",
parse_mode='html', reply_markup=markup)

@bot.message_handler(commands=['tegproverka'])
def telegram(message):
bot.send_message(message.chat.id,
f"Приветвую,тут вы можете проверить тег исполнителя для проверки введите эго тег."
f"Пример ниже:",
parse_mode='html')
bot.send_message(message.chat.id,
"формат ввода @example ",
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, "Держи,перейди по кнопке и воспользуйся ботом для проверки карточек! ",
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 == "@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")
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
02.11.2021, 01:44
Как я писал выше, я не шарю в 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"{message.from_user.first_name} {message.from_user.last_name}"
bot.send_message(message.chat.id, f"Приветствую," + send_mess, parse_mode='html')
bot.send_message(message.chat.id,
f"выберите одну из команд!",
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":", 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, "Держи,перейди по кнопке и выбери проверенного автора! ",
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, "Держи,перейди по кнопке и посмотри правила группы! ",
parse_mode='html', reply_markup=markup)

@bot.message_handler(commands=['tegproverka'])
def telegram(message):
bot.send_message(message.chat.id,
f"Приветвую,тут вы можете проверить тег исполнителя для проверки введите эго тег."
f"Пример ниже:",
parse_mode='html')
bot.send_message(message.chat.id,
"формат ввода @example ",
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, "Держи,перейди по кнопке и воспользуйся ботом для проверки карточек! ",
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 == "@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")
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]. Имей уважение!


спасибо большое!Именно это мне инужно было!