def add_user(chat_id, user_id): cursor.execute('SELECT antichato_list FROM chats WHERE chat_id = ?', (chat_id,)) user_list = json.loads(cursor.fetchall()[0][0]) if user_id not in user_list: user_list.append(user_id) cursor.execute('UPDATE chats SET antichato_list = ? WHERE chat_id = ?', (json.dumps(user_list), chat_id,)) conn.commit() return True
def get_welcome(chat_id): cursor.execute( 'SELECT welcome, welcome_enabled FROM chats WHERE chat_id = (?)', (chat_id, )) try: return cursor.fetchone() except IndexError: return None
def remove_user(chat_id, user_id): cursor.execute('SELECT antichato_list FROM chats WHERE chat_id = ?', (chat_id,)) user_list = json.loads(cursor.fetchall()[0][0]) for num, user in enumerate(user_list): if user == user_id: del user_list[num] cursor.execute('UPDATE chats SET antichato_list = ? WHERE chat_id = ?', (json.dumps(user_list), chat_id,)) conn.commit()
async def is_admin(chat_id, user_id, reply_id=None): if int(chat_id) < 0: # Groups and supergoups IDs. dic = {} cursor.execute('SELECT cached_admins FROM chats WHERE chat_id = ?', (int(chat_id), )) adms = cursor.fetchone()[0] if adms: cached_admins = json.loads(adms) else: cached_admins = {'expires': 0} if cached_admins['expires'] > time.time(): adm_id = cached_admins['admins_list'] else: adms = await bot.getChatAdministrators(chat_id) adm_id = [] for ids in adms: adm_id.append(ids['user']['id']) cursor.execute( 'UPDATE chats SET cached_admins = ? WHERE chat_id = ?', (json.dumps( dict(admins_list=adm_id, expires=int(time.time()) + 1200)), chat_id)) conn.commit() if user_id in adm_id or user_id in sudoers: dic['user'] = True else: dic['user'] = False if reply_id in adm_id: dic['reply'] = True else: dic['reply'] = False if bot_id in adm_id: dic['bot'] = True else: dic['bot'] = False else: # User IDs. dic = dict(user=False, reply=False, bot=False) return dic
def __init__(self, chat_id): # Supergoup and group IDs are negative. if chat_id < 0: cursor.execute('SELECT chat_lang FROM chats WHERE chat_id = ?', (chat_id, )) try: self.language = cursor.fetchone()[0] except (IndexError, TypeError): self.language = 'en' else: cursor.execute('SELECT chat_lang FROM users WHERE user_id = ?', (chat_id, )) try: self.language = cursor.fetchone()[0] except (IndexError, TypeError): self.language = 'en' if self.language not in langs: self.language = 'en' self.strings = strings[self.language]
async def antiflood(msg): if msg.get('chat') and msg['chat']['type'].endswith('group') and msg.get( 'from'): adm = await is_admin(msg['chat']['id'], msg['from']['id']) if not adm['user'] and adm['bot']: # Delete old rows. cursor.execute( 'DELETE FROM antiflood WHERE chat_id = ? AND unix_time < ?', (msg['chat']['id'], int(time.time()) - 5)) conn.commit() # Insert antiflood row. cursor.execute( 'INSERT INTO antiflood (chat_id, user_id, unix_time) VALUES (?,?,?)', (msg['chat']['id'], msg['from']['id'], int(time.time()))) conn.commit() # Get total rows count. cursor.execute( 'SELECT COUNT(*) FROM antiflood WHERE chat_id = ? AND user_id = ?', (msg['chat']['id'], msg['from']['id'])) msgs = cursor.fetchone()[0] if msgs == 5: await bot.sendMessage(msg['chat']['id'], 'Flood!') return True
def add_warns(chat_id, user_id, number): cursor.execute('SELECT * FROM user_warns WHERE chat_id = ? AND user_id = ?', (chat_id, user_id)) if cursor.fetchall(): cursor.execute('UPDATE user_warns SET count = count + ? WHERE chat_id = ? AND user_id = ?', (number, chat_id, user_id)) conn.commit() else: cursor.execute('INSERT INTO user_warns (user_id, chat_id, count) VALUES (?,?,?)', (user_id, chat_id, number)) conn.commit() return True
def get_antipedro(chat_id): cursor.execute( 'SELECT antipedro_enabled, antipedro_list FROM chats WHERE chat_id = ?', (chat_id, )) return cursor.fetchone()
async def start(msg): if msg.get('text'): strs = Strings(msg['chat']['id']) if msg['text'] == '/start' or msg['text'] == '!start' or msg[ 'text'].split()[0] == '/start@' + bot_username or msg[ 'text'] == '/start start': if msg['chat']['type'] == 'private': kb = InlineKeyboardMarkup(inline_keyboard=[ [ dict(text=strs.get('commands_button'), callback_data='all_cmds') ] + [ dict(text=strs.get('infos_button'), callback_data='infos') ], [ dict(text=strs.get('lang_button'), callback_data='change_lang') ] + [ dict(text=strs.get('add_button'), url='https://t.me/{}?startgroup=new'.format( bot_username)) ] ]) smsg = strs.get('pm_start_msg') else: kb = InlineKeyboardMarkup(inline_keyboard=[[ dict(text=strs.get('start_pm_button'), url='https://t.me/{}?start=start'.format( bot_username)) ]]) smsg = strs.get('start_msg') await bot.sendMessage(msg['chat']['id'], smsg, reply_to_message_id=msg['message_id'], reply_markup=kb) return True elif msg.get('data') and msg.get('message'): strs = Strings(msg['message']['chat']['id']) cmds_back = InlineKeyboardMarkup(inline_keyboard=[[ dict(text=strs.get('back_button'), callback_data='all_cmds') ]]) start_back = InlineKeyboardMarkup(inline_keyboard=[[ dict(text=strs.get('back_button'), callback_data='start_back') ]]) if msg['data'] == 'tools_cmds': await bot.editMessageText( (msg['message']['chat']['id'], msg['message']['message_id']), text='''*Ferramentas:* /clima - Exibe informações de clima. /coub - Pesquisa de pequenas animações. /echo - Repete o texto informado. /gif - Pesquisa de GIFs. /git - Envia informações de um user do GitHub. /html - Repete o texto informado usando HTML. /ip - Exibe informações sobre um IP/domínio. /jsondump - Envia o json da mensagem. /mark - Repete o texto informado usando Markdown. /print - Envia uma print de um site. /pypi - Pesquisa de módulos no PyPI. /r - Pesquisa de tópicos no Reddit /request - Faz uma requisição a um site. /shorten - Encurta uma URL. /token - Exibe informações de um token de bot. /tr - Traduz um texto. /yt - Pesquisa vídeos no YouTube. /ytdl - Baixa o áudio de um vídeo no YouTube.''', parse_mode='Markdown', reply_markup=cmds_back) return True elif msg['data'] == 'admin_cmds': await bot.editMessageText( (msg['message']['chat']['id'], msg['message']['message_id']), '''*Comandos administrativos:* /ban - Bane um usuário. /config - Envia um menu de configurações. /defregras - Define as regras do grupo. /kick - Kicka um usuário. /mute - Restringe um usuário. /pin - Fixa uma mensagem no grupo. /title - Define o título do grupo. /unban - Desbane um usuário. /unmute - Desrestringe um usuário. /unpin - Desfixa a mensagem fixada no grupo. /unwarn - Remove as advertências do usuário. /warn - Adverte um usuário. /welcome - Define a mensagem de welcome.''', parse_mode='Markdown', reply_markup=cmds_back) return True elif msg['data'] == 'user_cmds': await bot.editMessageText( (msg['message']['chat']['id'], msg['message']['message_id']), '''*Comandos para usuários normais:* /admins - Mostra a lista de admins do chat. /dados - Envia um número aleatório de 1 a 6. /bug - Reporta um bug ao meu desenvolvedor. /id - Exibe suas informações ou de um usuário. /ping - Responde com uma mensagem de ping. /regras - Exibe as regras do grupo. /roleta - Para jogar a Roleta Russa.''', parse_mode='Markdown', reply_markup=cmds_back) return True elif msg['data'] == 'start_back': kb = InlineKeyboardMarkup(inline_keyboard=[[ dict(text=strs.get('commands_button'), callback_data='all_cmds') ] + [ dict(text=strs.get('infos_button'), callback_data='infos') ], [ dict(text=strs.get('lang_button'), callback_data='change_lang') ] + [ dict(text=strs.get('add_button'), url='https://t.me/{}?startgroup=new'.format(bot_username)) ]]) await bot.editMessageText( (msg['message']['chat']['id'], msg['message']['message_id']), strs.get('pm_start_msg'), reply_markup=kb) return True elif msg['data'] == 'change_lang': langs_kb = InlineKeyboardMarkup(inline_keyboard=[[ dict(text='{lang_flag} {lang_name}'.format(**strings[x]), callback_data='set_lang ' + x) ] for x in strings] + [[ dict(text=strs.get('back_button'), callback_data='start_back') ]]) await bot.editMessageText( (msg['message']['chat']['id'], msg['message']['message_id']), "Select your prefered lang below:", reply_markup=langs_kb) return True elif msg['data'].split()[0] == 'set_lang': cursor.execute( 'UPDATE users SET chat_lang = ? WHERE user_id = ?', (msg['data'].split()[1], msg['message']['chat']['id'])) usr_lang = Strings(msg['message']['chat']['id']) start_back = InlineKeyboardMarkup(inline_keyboard=[[ dict(text=usr_lang.get('back_button'), callback_data='start_back') ]]) await bot.editMessageText( (msg['message']['chat']['id'], msg['message']['message_id']), usr_lang.get('lang_changed'), reply_markup=start_back) return True elif msg['data'] == 'all_cmds': await bot.editMessageText( (msg['message']['chat']['id'], msg['message']['message_id']), 'Selecione uma categoria de comando para visualizar.\n\nCaso precise de ajuda com o bot ou tem alguma sugestão entre no @AmanoChat', reply_markup=keyboard.all_cmds) return True elif msg['data'] == 'infos': await bot.editMessageText( (msg['message']['chat']['id'], msg['message']['message_id']), '''• EduuRobot Version: {version} Source Code: <a href="{sourcelink}">Here</a> Developers: <a href="https://github.com/AmanoTeam">Amano Team</> Owner: <a href="tg://user?id=123892996">Edu :3</> Partnerships: » <a href="https://t.me/hpxlist">HPXList - by usernein</> ©2019 - <a href="https://amanoteam.ml">AmanoTeam™</>'''.format( version=version, sourcelink=git_repo[0]), parse_mode='html', reply_markup=start_back, disable_web_page_preview=True) return True
def get_warns(chat_id, user_id): cursor.execute('SELECT count FROM user_warns WHERE chat_id = ? AND user_id = ?', (chat_id, user_id)) return cursor.fetchall()[0][0]
def reset_warns(chat_id, user_id): cursor.execute('DELETE FROM user_warns WHERE chat_id = ? AND user_id = ?', (chat_id, user_id)) conn.commit() return True
def get_warns_limit(chat_id): cursor.execute('SELECT warns_limit FROM chats WHERE chat_id = ?', (chat_id,)) return cursor.fetchall()[0][0]
# copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS # FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR # COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER # IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN # CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. import time from db_handler import conn, cursor from .admins import is_admin from config import bot cursor.execute( 'CREATE TABLE IF NOT EXISTS antiflood (chat_id, user_id, unix_time)') async def antiflood(msg): if msg.get('chat') and msg['chat']['type'].endswith('group') and msg.get( 'from'): adm = await is_admin(msg['chat']['id'], msg['from']['id']) if not adm['user'] and adm['bot']: # Delete old rows. cursor.execute( 'DELETE FROM antiflood WHERE chat_id = ? AND unix_time < ?', (msg['chat']['id'], int(time.time()) - 5)) conn.commit() # Insert antiflood row. cursor.execute(
def set_antipedro(chat_id, toggle): cursor.execute('UPDATE chats SET antipedro_enabled = ? WHERE chat_id = ?', (bool(toggle), chat_id)) conn.commit() return True
def set_welcome(chat_id, welcome): cursor.execute('UPDATE chats SET welcome = ? WHERE chat_id = ?', (welcome, chat_id)) conn.commit()
def get_antichato(chat_id): cursor.execute('SELECT antichato_enabled, antichato_list FROM chats WHERE chat_id = ?', (chat_id,)) return cursor.fetchall()[0]
import re import random import amanobot import aiohttp from amanobot.exception import TelegramError import time from config import bot, sudoers, logs, bot_username from utils import send_to_dogbin, send_to_hastebin from db_handler import cursor, conn from .admins import is_admin cursor.execute('''CREATE TABLE IF NOT EXISTS user_warns ( user_id INTEGER, chat_id INTEGER, count INTEGER)''') def get_warns(chat_id, user_id): cursor.execute('SELECT count FROM user_warns WHERE chat_id = ? AND user_id = ?', (chat_id, user_id)) return cursor.fetchone()[0] def get_warns_limit(chat_id): cursor.execute('SELECT warns_limit FROM chats WHERE chat_id = ?', (chat_id,)) return cursor.fetchone()[0] def add_warns(chat_id, user_id, number): cursor.execute('SELECT * FROM user_warns WHERE chat_id = ? AND user_id = ?', (chat_id, user_id))
def get_rules(chat_id): cursor.execute('SELECT rules FROM chats WHERE chat_id = (?)', (chat_id, )) try: return cursor.fetchall()[0] except IndexError: return None
def set_rules(chat_id, rules): cursor.execute('UPDATE chats SET rules = ? WHERE chat_id = ?', (rules, chat_id)) conn.commit()
def disable_welcome(chat_id): cursor.execute('UPDATE chats SET welcome_enabled = ? WHERE chat_id = ?', (False, chat_id)) conn.commit()
async def start(msg): if msg.get('text'): strs = Strings(msg['chat']['id']) if msg['text'] == '/start' or msg['text'] == '!start' or msg[ 'text'].split( )[0] == '@gorpo_bot' + bot_username or msg['text'] == 'start': if msg['chat']['type'] == 'private': kb = InlineKeyboardMarkup(inline_keyboard=[ [ dict(text=strs.get('commands_button'), callback_data='all_cmds') ] + [ dict(text=strs.get('infos_button'), callback_data='infos') ], [ dict(text=strs.get('lang_button'), callback_data='change_lang') ] + [ dict(text=strs.get('add_button'), url='https://t.me/{}?startgroup=new'.format( bot_username)) ] ]) smsg = strs.get('pm_start_msg') else: kb = InlineKeyboardMarkup(inline_keyboard=[[ dict(text=strs.get('start_pm_button'), url='https://t.me/{}?start=start'.format( bot_username)) ]]) smsg = strs.get('start_msg') await bot.sendMessage(msg['chat']['id'], smsg, reply_to_message_id=msg['message_id'], reply_markup=kb) return True elif msg.get('data') and msg.get('message'): strs = Strings(msg['message']['chat']['id']) cmds_back = InlineKeyboardMarkup(inline_keyboard=[[ dict(text=strs.get('back_button'), callback_data='all_cmds') ]]) start_back = InlineKeyboardMarkup(inline_keyboard=[[ dict(text=strs.get('back_button'), callback_data='start_back') ]]) if msg['data'] == 'tools_cmds': await bot.editMessageText( (msg['message']['chat']['id'], msg['message']['message_id']), text='''*Ferramentas:* /clima - Exibe informações de clima. /coub - Pesquisa de pequenas animações. /echo - Repete o texto informado. /gif - Pesquisa de GIFs. /git - Envia informações de um user do GitHub. /html - Repete o texto informado usando HTML. /ip - Exibe informações sobre um IP/domínio. /jsondump - Envia o json da mensagem. /mark - Repete o texto informado usando Markdown. /print - Envia uma print de um site. /pypi - Pesquisa de módulos no PyPI. /r - Pesquisa de tópicos no Reddit /request - Faz uma requisição a um site. /shorten - Encurta uma URL. /token - Exibe informações de um token de bot. /tr - Traduz um texto. /yt - Pesquisa vídeos no YouTube. /ytdl - Baixa o áudio de um vídeo no YouTube.''', parse_mode='Markdown', reply_markup=cmds_back) return True elif msg['data'] == 'admin_cmds': await bot.editMessageText( (msg['message']['chat']['id'], msg['message']['message_id']), '''*Comandos administrativos:* [+]TODOS COMANDOS LISTADOS ATE ULTIMA ATUALIZACAO[+] /comandos@gorpo_bot /start - inicia o bot /ban- bane usuario /unban - desbane usuario /kick -kicka usuario /mute - muta usuario /unmute - desmuta usuario /pin - fixa posts /unpin - desfixa os posts /title - muda o titulo do grupo /defregras - define regras /regras - ve as regras /config - informa??es ser?o enviadas no privado /admdebug - debug do admin /tr - Traduz um texto. /yt - Pesquisa v?deos no YouTube. /ytdl - Baixa o ?udio de um v?deo no YouTube. /r - pesquisa um termo no redit /clima - Exibe informa??es de clima /coub - Pesquisa de pequenas anima??es /dados - jogo de dados /gif - gif do giphy /git - usuario do github /id - id do usuario /ip - informa dados de um ip /jsondump - retorna dados formatados /stickerid - pega id de um sticker /getsticker - baixa um sticker /criar_sticker - cria um pacote de stickers /kibar - copia um sticker para o pacote de stickers /pypi - pesquisa libs python /rextester - interpretador de varias linguagens de programa??o /mark - Repete o texto informado usando Markdown /html - Repete o texto informado usando HTML /request - Faz uma requisi??o a um site fala - Repete o texto que voce pedir para ele falar site - exibe o site da equipe facebook - exibe o facebook da equipe, cadastre-se netflix - exibe nosso site de netflix gratis iptv - exibe nosso site de iptv gratis anime - exibe nosso site de anime gratis pkg - exibe nosso site de pkg's para ps3 gratis biblioteca - exibe nossa biblioteca hacker curso - exibe nosso site de cursos doadores - exibe instru??es completas para doadores painel - exibe nosso painel hacker [*]COMANDOS EXCLUSIVOS DA ADM[*] /ban - Bane um usuário. /config - Envia um menu de configurações. /defregras - Define as regras do grupo. /kick - Kicka um usuário. /mute - Restringe um usuário. /pin - Fixa uma mensagem no grupo. /title - Define o título do grupo. /unban - Desbane um usuário. /unmute - Desrestringe um usuário. /unpin - Desfixa a mensagem fixada no grupo. /unwarn - Remove as advertências do usuário. /warn - Adverte um usuário. /welcome - Define a mensagem de welcome.''', parse_mode='Markdown', reply_markup=cmds_back) return True elif msg['data'] == 'user_cmds': await bot.editMessageText( (msg['message']['chat']['id'], msg['message']['message_id']), '''*Comandos para usuários normais:* /admins - Mostra a lista de admins do chat. /dados - Envia um número aleatório de 1 a 6. /bug - Reporta um bug ao meu desenvolvedor. /id - Exibe suas informações ou de um usuário. /ping - Responde com uma mensagem de ping. /regras - Exibe as regras do grupo. /roleta - Para jogar a Roleta Russa.''', parse_mode='Markdown', reply_markup=cmds_back) return True elif msg['data'] == 'start_back': kb = InlineKeyboardMarkup(inline_keyboard=[[ dict(text=strs.get('commands_button'), callback_data='all_cmds') ] + [ dict(text=strs.get('infos_button'), callback_data='infos') ], [ dict(text=strs.get('lang_button'), callback_data='change_lang') ] + [ dict(text=strs.get('add_button'), url='https://t.me/{}?startgroup=new'.format(bot_username)) ]]) await bot.editMessageText( (msg['message']['chat']['id'], msg['message']['message_id']), strs.get('pm_start_msg'), reply_markup=kb) return True elif msg['data'] == 'change_lang': langs_kb = InlineKeyboardMarkup(inline_keyboard=[[ dict(text='{lang_flag} {lang_name}'.format(**strings[x]), callback_data='set_lang ' + x) ] for x in strings] + [[ dict(text=strs.get('back_button'), callback_data='start_back') ]]) await bot.editMessageText( (msg['message']['chat']['id'], msg['message']['message_id']), "Select your prefered lang below:", reply_markup=langs_kb) return True elif msg['data'].split()[0] == 'set_lang': cursor.execute( 'UPDATE users SET chat_lang = ? WHERE user_id = ?', (msg['data'].split()[1], msg['message']['chat']['id'])) usr_lang = Strings(msg['message']['chat']['id']) start_back = InlineKeyboardMarkup(inline_keyboard=[[ dict(text=usr_lang.get('back_button'), callback_data='start_back') ]]) await bot.editMessageText( (msg['message']['chat']['id'], msg['message']['message_id']), usr_lang.get('lang_changed'), reply_markup=start_back) return True elif msg['data'] == 'all_cmds': await bot.editMessageText( (msg['message']['chat']['id'], msg['message']['message_id']), 'Selecione uma categoria de comando para visualizar.\n\nCaso precise de ajuda com o bot ou tem alguma sugestão entre no @AmanoChat', reply_markup=keyboard.all_cmds) return True elif msg['data'] == 'infos': await bot.editMessageText( (msg['message']['chat']['id'], msg['message']['message_id']), '''• Manicomio Bot Version: {version} Nosso site: <a href="https://tcxsproject.com">Manicomio TCXS Project</a> Developers: <a href="https://github.com/gorpo">GorpoOrko</> Partnerships: » <a href="https://t.me/tcxsproject2">telegram</> ©2020 - <a href="https://t.me/tcxsproject2">TCXS Project™</>'''.format( version=version, sourcelink=git_repo[0]), parse_mode='html', reply_markup=start_back, disable_web_page_preview=True) return True