ADD get by ID command.

pull/3/head
kevin.caires 3 years ago
parent b03adf294b
commit 19f0f144ca

@ -6,7 +6,7 @@ from random import choice
from discord.ext import commands from discord.ext import commands
from utils.database import get_quotes, set_quote from utils.database import get_by_id, get_quotes, set_quote
client = commands.Bot(command_prefix='--') client = commands.Bot(command_prefix='--')
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
@ -19,7 +19,7 @@ async def quote(bot: object, *quote: str) -> str:
Save a quote into database. Save a quote into database.
""" """
if not quote: if not quote:
return await bot.send('Insert a message to save.') return await bot.send('Insert a message to save.\n_Your dumb ass!_')
quote = ' '.join(quote) quote = ' '.join(quote)
@ -45,7 +45,7 @@ async def random_quote(bot: object) -> str:
quote_id_stack.pop(0) quote_id_stack.pop(0)
quotes = get_quotes(quote_id_stack) quotes = get_quotes(quote_id_stack)
elif not quotes: elif not quotes:
return await bot.send('Have no one quote saved.') return await bot.send('Have no one quote saved.\n_Hey jerk, coffee?_')
chosen_one = choice(quotes) chosen_one = choice(quotes)
quote_id_stack.append(chosen_one.id) quote_id_stack.append(chosen_one.id)
@ -63,11 +63,33 @@ async def random_quote(bot: object) -> str:
return await bot.send(ex) return await bot.send(ex)
@client.command(aliases=['bid'])
async def by_id(bot, _id: int=None) -> str:
"""
Get quote by ID.
"""
if not isinstance(_id, int) or not _id:
return await bot.send("_Don't fuck, you ass hole_.\nThe ID need to be a interger!")
quote = get_by_id(_id)
if not quote:
return await bot.send("_Got wrong, you socker!_\nThis ID doesn't exist in database!")
try:
# To image links.
if 'http' in quote.quote:
return await bot.send(f'{quote.quote}')
return await bot.send(f'{quote.quote}\n`By: {quote.user}`')
except Exception as ex:
return await bot.send(ex)
@client.command(aliases=['qstack']) @client.command(aliases=['qstack'])
async def queue_stack(bot: object) -> str: async def queue_stack(bot: object) -> str:
""" """
Displays the 5 quote history stack Displays the 5 quote history stack
""" """
return await bot.send( return await bot.send('A list of the 5 latest message IDs follows:'\
f'A list of the 5 latest message IDs follows: `{",".join(str(q) for q in quote_id_stack)}`' f' `{",".join(str(q) for q in quote_id_stack[-5:])}`')
)

@ -86,3 +86,24 @@ def get_quotes(ids: list) -> tuple:
response = cursor.fetchall() response = cursor.fetchall()
return tuple(obj(*r) for r in response) return tuple(obj(*r) for r in response)
def get_by_id(id: int) -> object:
"""
Get one quote by ID.
"""
obj = namedtuple('Quotes', ['quote', 'user', 'id'])
_sql = f'''
select quote, user, id
from neeble_quotes
where id={id};
'''
with Cursor(MYSQL_CONFIG) as cursor:
cursor.execute(_sql)
quote = cursor.fetchone()
if not quote:
return None
return obj(*quote)

Loading…
Cancel
Save