ProHoster > Блог > ayelujara iroyin > Bii o ṣe le fi awọn ijabọ irọrun ranṣẹ si roboti kan. A kọ bot ni Python ati Google BigQuery
Bii o ṣe le fi awọn ijabọ irọrun ranṣẹ si roboti kan. A kọ bot ni Python ati Google BigQuery
Ṣe o ni awọn iṣẹ-ṣiṣe ti o tun ọjọ lẹhin ọjọ, ọsẹ lẹhin ọsẹ? Fun apẹẹrẹ, kikọ awọn iroyin. O beere data, ṣe itupalẹ rẹ, wo inu rẹ (ṣe awọn aworan, awọn shatti), lẹhinna firanṣẹ si ọga rẹ. Ṣugbọn kini ti gbogbo eyi ba jẹ adaṣe?
Ninu ikẹkọ yii a yoo ṣẹda bot kan fun Telegram ti yoo ṣe iranlọwọ adaṣe adaṣe. Ati ohun ti o tutu julọ ni pe gbogbo eto naa yoo ni awọn laini koodu 50 nikan! Ti o ba n ṣẹda bot kan fun Telegram fun igba akọkọ, lẹhinna o yẹ ki o tun ka eyi sare.
pip3 fi sori ẹrọ google-cloud-bigquery matplotlib numpy pandas python-telegram-bot
Nsopọ Google BigQuery API
Ti a ba fẹ lo iṣẹ naa, a nilo lati so Google BigQuery API pọ. Lati ṣe eyi a lọ si Awọn itọnisọna Nẹtiwọki Google ati ṣẹda iṣẹ akanṣe tuntun (tabi yan eyi ti o wa tẹlẹ).
Ninu igbimọ iṣakoso, yan MU APIS ATI Awọn iṣẹ ṣiṣẹ ki o wa BigQuery API.
A nilo paramita marun, nibiti x jẹ data x-axis, x_label jẹ akọle fun axis, y ni data y-axis, y_label jẹ akọle fun ipo, ati akọle jẹ akọle gbogbo iworan.
def visualize_bar_chart(x, x_label, y, y_label, title):
plt.title(title)
plt.xlabel(x_label)
plt.ylabel(y_label)
index = np.arange(len(x))
plt.xticks(index, x, fontsize=5, rotation=30)
plt.bar(index, y)
return plt
Fi aworan pamọ
Bayi jẹ ki a lo awọn iṣẹ meji lati ṣẹda iworan kan ati fipamọ.
A yoo firanṣẹ nọmba awọn ifiweranṣẹ ti a tẹjade lojoojumọ. Ni akọkọ a kọ ibeere kan.
query = """
SELECT DATE(creation_date) date, COUNT(*) total_posts
FROM `bigquery-public-data.stackoverflow.post_history`
GROUP BY 1
HAVING date > DATE_SUB('2018-12-02', INTERVAL 14 DAY)
ORDER BY 1
"""
Ibeere ṣe iranlọwọ lati gba data fun ọsẹ meji ti o bẹrẹ ni Oṣu kejila ọjọ 2, ọdun 2018.
A lo ọjọ yii nitori 2018-12-02 jẹ data tuntun ti o gbasilẹ ni bigquery-public-data.stackoverflow.post_history, ni awọn igba miiran o le lo CURRENT_DATE() lati gba data tuntun.
Pe iṣẹ ibeere_to_bigquery lati gba data naa.
dataframe = query_to_bigquery(ibeere)
Lẹhinna a lo iwe data ọjọ fun ipo-x, ati iwe lapapọ_posts fun y-axis.
x = dataframe['ọjọ'].tolist()
y = fireemu data ['total_posts'].tolist()
A wo oju rẹ nipa lilo iṣẹ visualize_bar_chart ati fipamọ bi aworan.
A fi ipari si koodu yii ni iṣẹ kan ti a pe ni get_and_save_image.
def get_and_save_image():
query = """
SELECT DATE(creation_date) date, COUNT(*) total_posts
FROM `bigquery-public-data.stackoverflow.post_history`
GROUP BY 1
HAVING date > DATE_SUB('2018-12-02', INTERVAL 14 DAY)
ORDER BY 1
"""
dataframe = query_to_bigquery(query)
x = dataframe['date'].tolist()
y = dataframe['total_posts'].tolist()
plt = visualize_bar_chart(x=x, x_label='Date', y=y, y_label='Total Posts', title='Daily Posts')
plt.savefig('viz.png')
Fi aworan ranṣẹ
Lati le fi ijabọ ranṣẹ si olugba, o nilo lati mọ paramita chat_id.
A nlo userinfobot ki o si tẹ / bẹrẹ. Bot naa dahun pẹlu alaye pataki, chat_id wa ninu aaye id.
Bayi jẹ ki a ṣẹda iṣẹ send_image. Yoo lo iṣẹ get_and_save_image lati gba pada ati fi aworan naa pamọ. Ati lẹhinna a firanṣẹ ohun gbogbo si olubasọrọ to tọ.