Как я могу отметить участника в моем боте Discord на PythonPython

Программы на Python
Anonymous
Как я могу отметить участника в моем боте Discord на Python

Сообщение Anonymous »

Итак, у меня есть система повышения уровня на Python, но я хочу добавить @tag, чтобы бот упоминал участника, который повысил уровень... Но я понятия не имею, как это сделать. Я уже пробовал несколько вещей, но все они не работают.

Код: Выделить всё

    from discord.ext import commands
import discord
import logging
import yaml
import sqlite3
import time
import random
import re

logging.basicConfig(level=logging.INFO)

bot = commands.Bot(command_prefix='l>', description='Hype Levels')

def threshold(n):
level_threshold = 5*(n**2)+50*n+100
return level_threshold

@bot.command(pass_context=True)
async def rank(ctx):

try:
_, member = (ctx.message.content).split(' ', 1)
member = re.sub("[^0-9]", "", member)
except:
member = ctx.message.author.id

db = sqlite3.connect('users.db')
c = db.cursor()

c.execute('SELECT user.*, (SELECT count(*) FROM users AS members WHERE members.rawexp > user.rawexp) as Rank FROM users AS user WHERE id = ?',
(ctx.message.author.id, ))

user = c.fetchone()
db.close()

rank = str(user[6] + 1)

embed = discord.Embed(title='{}\'s Information'.format(ctx.message.author.name)) \
.set_thumbnail(url=ctx.message.author.avatar_url) \
.add_field(name='Rank', value='#' + rank) \
.add_field(name='Level', value=user[2]) \
.add_field(name='EXP', value='{}/{}'.format(user[3], threshold(user[2]))) \
.add_field(name='Raw EXP', value=user[4]) \

await ctx.send(embed=embed)

@bot.event
async def on_message(message):

if message.author == bot.user:
return
if message.author.bot:
return

if message.content.startswith('l>'):
await bot.process_commands(message)
return

db = sqlite3.connect('users.db')
c = db.cursor()

c.execute('SELECT * FROM users WHERE id= ?', (message.author.id,))
user = c.fetchone()

if user is None:
await message.channel.send('Looks like you\'re new! Welcome to level 1. Initializing player...')
c.execute('INSERT INTO users(id, name, level, exp, rawexp, time) VALUES(?,?,?,?,?,?)', (message.author.id, message.author.name, 1, 0, 0, time.time()))
db.commit()
db.close()
return

if message.author.name != user[1]:
c.execute('UPDATE users SET name = ? WHERE id= ?', (message.author.name, message.author.id))

if (time.time() - user[5]) > 60:
addedexp = random.randint(10, 25)
exp = user[3] + addedexp
rawexp = user[4] + addedexp
c.execute('UPDATE users SET exp = ?, rawexp = ?, name = ?, time = ? WHERE id= ?', (exp, rawexp, message.author.name, time.time(), message.author.id))

if (exp > threshold(user[2])):
level = user[2] + 1
c.execute('UPDATE users SET exp = ?, level = ? WHERE id= ?', (0, level, message.author.id))
await message.channel.send('Wowza! You leveled up! Your level is now **{}**.'.format(level))

db.commit()
db.close()

await bot.process_commands(message)

@bot.event
async def on_ready():
print("HypeLevels V1.1")
print("Made by: Garbodonk#6347")
print("Bot Name: " + str(bot.user.name))
print("Bot ID: " + str(bot.user.id))
await bot.change_presence(activity=discord.Streaming(name='some HYPE', url="https://www.twitch.tv/hypepixelbot", type=1))

#Initialize database.
db = sqlite3.connect('users.db')
c = db.cursor()
c.execute('CREATE TABLE IF NOT EXISTS users(id INTEGER PRIMARY KEY, name TEXT, level INT, exp INTEGER, rawexp INTEGER, time REAL)')
db.commit()

bot.run('Token')
Но я хочу добавить @tag, когда люди повышают уровень, чтобы их отмечали

Код: Выделить всё

if (exp > threshold(user[2])):
level = user[2] + 1
c.execute('UPDATE users SET exp = ?, level = ? WHERE id= ?', (0, level, message.author.id))
await message.channel.send('Wowza! You leveled up! Your level is now **{}**.'.format(level))
кто-нибудь знает, как это сделать?

Подробнее здесь: https://stackoverflow.com/questions/591 ... iscord-bot

Вернуться в «Python»