im使用C#与Telegram.Bot库一起使用 我有一个SQL数据库,我有一个从Datetime类型调用的PostDate 我试图限制每个用户每小时使用此if(true)1次,可以说用户单击了,然后在07/05/2018 17:45:00调用了按钮,并显示了带有“ Hey”的msgbox,用户尝试调用再次在07/05/2018嘿,我希望消息框显示有剩余时间,直到用户可以在07/05/2018 18:45再次调用“嘿”消息框。 :00带有“ hey”的msgbox将会再次弹出,并插入数据库,以便用户可以使用“ hey”的msgbox 我正在谈论的if条件在下面。
好的,第二次尝试为我的英语不好解释我抱歉,我会尽力做到
好的,所以我有一个称为Accs的表,并且有一个名为PostDate的Username和Datetime Column,并且在我的代码中有一个If语句,我想要msgbox(“ Hey”)可以被用户每小时1次调用一次,并且下次用户可以调用msgbox时将其写入ecid的PostDate,并且如果用户要求msgbox(“ Hey”)和小时没有过去,则剩余时间为messagebox,直到他可以再次调用msgbox(“嘿”)
using (var GetLastPost = new SqlCommand("SELECT PostDate FROM Accs2 WHERE Username LIKE @user1", con))
{
GetLastPost.Parameters.AddWithValue("@user1", ecid);
con.Close();
con.Open();
using (var LastReader = await GetLastPost.ExecuteReaderAsync())
{
if (!LastReader.HasRows || !LastReader.Read())
{
}
else
{
var DataTime = DateTime.Parse(LastReader["PostDate"].ToString());
// SqlDateTime sqlNow = new SqlDateTime(DataTime);
SqlDateTime sqler = new SqlDateTime(DateTime.UtcNow);
TimeSpan difference = DateTime.UtcNow.Subtract(DataTime);
if (difference.TotalMinutes <= 60)
{
con.Close();
con.Open();
using (var PostCheck = new SqlCommand("UPDATE Accs2 set PostDate = '" + sqler.Value + "' where Username like '%" + ecid + "%'", con))
{
MessageBox.Show("Hey");
await PostCheck.ExecuteNonQueryAsync();
}
con.Close();
}
else
{
MessageBox.Show("You can use Hey more " + sqler.ToString() + "Minutes");
}
con.Close();
}
}
}
答案 0 :(得分:0)
需要注意的三件事:
您需要知道用户最后一次说“嘿”的时间,lastPost
= SELECT TOP 1 PostDate FROM Accs2 WHERE Username = "abcd" ORDER by PostDate DESC
如果要允许用户每小时发送1条消息,请使用
if ((DateTime.UtcNow - lastPost).TotalMinutes >= 60) { // allow to say "Hey" } else { // stop }
using (SqlConnection connection = new SqlConnection(connectionString)) { connection.Open(); // your code here }